AtCoder Beginner Contest 163 / Python
結果
今回、だいぶ簡単だった気がする。
しかし残念ながら不具合の影響でアンレイティッドになりましたね。
何だろう参加者が1万人を超えると無理なのだろうか、前回もだよね。
クロームで問題が開けなくなっていた。
こんな感じで。見事に問題の内容だけ表示されていない。
誰も見れてないのかな、と思っていたら順位表が更新されていたので、
おい、見れてる人もいるんかい!とブラウザをエッジに変えたら見れた。
ちなみに、これを書いている現在、まだ直っていない。
クロームだめなんかな、毎回エッジで開いた方が良いんだろうか。
あと1問目の採点が「内部エラー」ってなる不具合も起きていた。
あのね、まあ良いんだけどね、不具合はさ。
前回、不具合に右往左往してしまって過去最低の順位で終えたんだけど。
それはレーティング有りになったのね。
でさ、今回は再びの不具合にもめげず、人数比で過去最高順位なんよ。
そんで今回はレーティング無し。
何の嫌がらせじゃーーーーーーーーーい!!!
はぁ・・・クレーマークレーマーはこのくらいにして問題いきますか。
問題と解答と勉強
提出したコード
import math print(int(input()) * 2 * math.pi)
提出したコード
N, M = map(int, input().split()) A = list(map(int, input().split())) if N - sum(A) >= 0: print(N - sum(A)) else: print(-1)
提出したコード
import collections N = int(input()) A = list(map(int, input().split())) c = collections.Counter(A) for i in range(1, N+1): print(c[i])
Counter()
に丸投げは通らないかと思ったが、通ってしまった。
提出したコード
N, K = map(int, input().split()) print(int(((N*(N+1)*(N+2)-K*(K-1)*(3*N-2*K+4))/6+N-K+2)%1000000007))
よくわからんかったから数学で解いてしまった。
ということで、ただの数学の問題だった。
Σ は取らないで for で回した方が早そうだけど、
この際なので、もう全部数学で解いてみた。
結構ベタな動的計画法。
どうせ解けないと思って4問目で遊んでしまったが考えれば良かった。
勉強用
n = int(input()) a = [(_a, i) for i, _a in enumerate(map(int, input().split()))] a.sort(reverse=True) dp = [[0]*(n+1) for _ in range(n+1)] for i, (v, p) in enumerate(a): # 前にj人いる dp[i+1][0] = dp[i][0] + v*abs((n-1 - i) - p) for j in range(1, i+1): dp[i+1][j] = max(dp[i][j] + v*abs((n-1 - (i-j)) - p), dp[i][j-1] + v*abs((j-1) - p)) dp[i+1][i+1] = dp[i][i] + v*abs(i - p) print(max(dp[n]))
6問目は恒例のパスで。