AtCoder Beginner Contest 176 / Python


f:id:penyooo:20200112235130p:plain


  • 独学者です。( 2019 / 9 ~ )
  • AtCoder の問題に Python で取り組んでいます。
  • ABC で4問目(茶か緑)まで解けることを目標にしています。

完全に独学なのでコードは酷いと思います。

AtCoder やってる方、お気軽にコメントください。





結果



f:id:penyooo:20200823023640p:plain

下げたぁ、地力のみではこの辺が限界っぽいねぇ。

やっぱり緑はちゃんと勉強しないとダメか。


ちょっとだけ言い訳するとね、

アベマ将棋チャンネルでアベマTVトーナメント決勝を見てたら、
いつのまにか21時過ぎていたものだから、出遅れたんよね!ね!







問題と解答と勉強


atcoder.jp



提出したコード
import math
 
N, X, T = map(int, input().split())
 
print(math.ceil(N / X)*T)









atcoder.jp



提出したコード
N = [int(i) for i in input()]
 
if sum(N) % 9 == 0:
    print("Yes")
else:
    print("No")









atcoder.jp



提出したコード
N, S, *A = map(int,open(0).read().split())
ans = 0
 
for i in A:
    if i > S:
        S = i
    else:
        ans += S -i
print(ans)



前回覚えた open(0).read() を使ってみた。

特に意味は無いけどね。

でもこれ出来る人っぽくて好き。







atcoder.jp



これさ、難しくない?

というか、迷路問題苦手なんよね。

探索がちゃんと作れない。勉強せんとなぁ・・・。

という訳で、答えみてもようわからんかった。







atcoder.jp



TLEのやつ
import numpy as np
 
H, W, M = map(int, input().split())
 
h = np.array([0]*H)
w = np.array([0]*W)
 
bom = np.array([[0]*W]*H)
 
for _ in range(M):
    i, j = map(int, input().split())
    h[i-1] += 1
    w[j-1] += 1
    bom[i-1][j-1] += 1
 
ans = []
 
for i in range(H):
   ans.append(max(w + h[i] - bom[i])) 
 
print(max(ans))



答えは出るんだけど、規格外に遅い。

勉強用
h,w,n=map(int,input().split())
H=[0]*h
W=[0]*w
L=[(0,0)]*n
for i in range(n):
    a,b=map(int,input().split())
    L[i]=(a,b)
    H[a-1]+=1
    W[b-1]+=1
h_max=max(H)
w_max=max(W)
ans=h_max+w_max
cnt=0
for l in L:
    if H[l[0]-1]==h_max and W[l[1]-1]==w_max:
        cnt+=1
if H.count(h_max)*W.count(w_max)==cnt:
    ans-=1
print(ans)



あー、やろうとしてることは同じね。

最後のとこで工夫が1つ足りて無かったって感じか。

というかそれで時間大丈夫になるんか。ほぉー。



勉強用
*r,=c=[0]*9**6
_,*z=[[*map(int,t.split())]for t in open(0)]
for y,x in z:r[y]+=1;c[x]+=1
print(-(r.count(h:=max(r))*c.count(w:=max(c))==sum(h+w==r[y]+c[x]for y,x in z))+h+w)



ヤバいやつ(良い意味で)だとこんなんがあるようだ。

えー、これで出るんかぁ。ほぉー・・・・







atcoder.jp



見てない!



以上!