AtCoder Beginner Contest 160 / Python
結果
下がった!!
やはり難しい問題が解けないと厳しいとこまで来ているようで・・・
ちょっと微妙な行いをしたら即下がってしまう (゚Д゚;)
問題と解答と勉強
提出したコード
S = input() if S[2] == S[3] and S[4] == S[5]: print("Yes") else: print("No")
今回は1問目らしい1問目だった。
提出したコード
X = int(input()) print((X // 500) * 1000 + ((X % 500) // 5) * 5)
これも特に何もない。
提出したコード
import numpy as np K, N = map(int, input().split()) A = list(map(int, input().split())) b = np.array(A[1:] + [A[0] + K]) c = np.array(A) print(K - max(b - c))
隣合う2地点間の距離が最大になるところ以外のところが答え。
これが奇麗な解法かどうかわからないが、それなりにシンプルかと。
ここを失敗した。
これを最短経路問題なんだろうなと思って。
そこから最小全域木とかダイクストラ法とかを検索してしまい、
あー全くわからん、こりゃ無理だ、と諦めてしまったのだけど。
全然そんな問題じゃなかったようで、普通に考えれば良かったみたい。
4問目だから何か特殊なアルゴリズムだって思うじゃない。あぁーあ・・・
終わってから考えたやつ
N, X, Y = map(int,input().split()) ans = [0] * (N-1) for i in range(1, N+1): for j in range(i+1, N+1): a = abs(X - i) b = abs(Y - j) c = abs(a + b + 1) ans[min(j-i-1, c-1)] += 1 for i in ans: print(i)
例:1~8で、3と6が繋がっている。
X → Y を通るルート c。
X → Y を通らないルート j - i。
のうち小さい方を取る。
これを1-2、1-3、1-4、1-5‥‥‥、6-7、6-8、7-8と繰り返す。
ちなみに i が X → Y ルートの内側にあるときは、それぞれこのようになる。
i 、j 共に X → Y ルートの内側にあるとき。
こんなんで良かったのか、終わってから考えたら普通に出来た。
N, X, Y = map(int,input().split()) ans = [0] * (N-1) for i in range(1, N+1): for j in range(i+1, N+1): ans[min(j-i-1, abs(X - i)+abs(Y - j))] += 1 for i in ans: print(i)
まとめてこんな感じに書いている人の方が多いみたいなんだけど、
これって何してるかイマイチよくわからん感じよね。
この辺ってどうなんだろう、どっちでも良いんだろうけど、どっちが良いのだろうか。
何にせよ絶対解けたわぁ、問題の難易度判定力も重要だなぁ。
敗因は解けないと思い込んんだことだ。
何かこの5問目、出来そうな気がする。
ちょっと疲れたから今日じゃないけど、後で考えてみたい。
見た目より難しいんかな、5問目だしなぁ。
全方位木 dp
なんじゃそりゃ、諦めよう。