はじめに
前回
今日は最近のCをやります
#22
考えたこと
ABC160-C
コンテスト中は$N!*N$の全てを考えようとしていましたが、それではTLEしてしまいます。N個全て訪問するので1つ通らない区間があります。$A_i$から時計周り、反時計周りすると考えると左右どちらかは通りません。ですので$A_i$と左右の距離の最大値が答えになります。注意点は$A_N$→$A_1$の場合はそのままでは計算できないので、別で計算しました。
k, n = map(int,input().split())
a = list(map(int,input().split()))
cost = max(a[0]+k-a[-1],a[-1]-a[-2])
for i in range(1,n-1):
cost = max(a[i]-a[i-1],a[i+1]-a[i],cost)
print(k-cost)
ABC159-C
直方体の時に体積が最大になるので3で割って三乗するだけ
print((int(input())/3)**3)
ABC158-C
計算するだけ。前回解いた時にもっと余裕持ってfor回せると言われたので10000まで計算しています。//1で切り捨て処理しています。
a, b = map(int,input().split())
for i in range(10000):
if (i * 0.08)//1 == a and (i * 0.1)//1 == b:
print(i)
quit()
print(-1)
ABC157-C
問題見た時は簡単だと思ったけどできなかった。strにして桁ごとに比較してもできなかった。結果を見る限りうまく場合分けでできてない。リベンジする
ABC156-C
$N$が小さいので$N$以下の全ての整数でコストを計算します。中央値付近で最小になる?
n = int(input())
x = list(map(int,input().split()))
ans = 10**9
for i in range(101):
cost = 0
for j in range(n):
cost += (x[j]-i)**2
ans = min(ans,cost)
print(ans)
ABC155-C
$S$をcollections.Counterに入れて、most_commonして最頻値を求めています。あとは出力するだけ
import collections
n = int(input())
s = [str(input()) for _ in range(n)]
s = collections.Counter(s)
s = s.most_common()
c = s[0][1]
ans = []
for i in range(len(s)):
if s[i][1] == c:
ans.append(s[i][0])
ans.sort()
for i in ans:
print(i)
まとめ
Cは楽しい。では、また