paiza 問題「じゃんけんの手の出し方」
実験でpyてょnをやったので、1年ぶりくらいにpaizaを解いた。深夜にやることではない。バカアホ全探索の巻。まあ全探索が正解らしいが。問題は↓↓
paiza.jp
デバッグ用のいろいろを省いた提出用版。各データ0.02秒で処理できたはず。
# coding: utf-8 # Your code here! s = input().split() times = int(s[0]) finger = int(s[1]) win = 0 G = 0 C = 0 P = 0 order = list(input()) for i in range(times): if order[i] == 'C': C += 1 elif order[i] == 'G': G += 1 elif order[i] == 'P': P += 1 temp_win = 0 for i in range(min(times , int(finger/5) ) + 1): if (finger-i*5)%2 == 0 and times >= (i + (finger - i*5)/2): myP = i myC = (finger - i*5)/2 myG = times - myC - myP i_win = min(myP , G) + min(myC , P) + min(myG , C) temp_win = max(i_win , temp_win) win += temp_win print(int(win))
こっちはデバッグ用。めちゃめちゃprintします。見にくいわ。
s = input().split() times = int(s[0]) #じゃんけんの回数 finger = int(s[1]) #指の本数 #自分の出すGCPの回数 myG=0 myC=0 myP=0 #自分の出したGCPの数の最終結果(デバッグ用) res_myP = 0 res_myC = 0 order = list(input()) #相手の出すGCPをリストで格納 win = 0 #自分の勝利数 #相手の出すGCPの数 G = 0 C = 0 P = 0 print(order)#確認用 #相手の出すGCPをカウント for i in range(times): if order[i] == 'C': C += 1 elif order[i] == 'G': G += 1 elif order[i] == 'P': P += 1 print(G) #確認用 print(C) print(P) #fingerをmyPとmyCにどれだけ割り振れるかを考える? #temp_winが最大になる手の出し方を考える。 temp_win = 0 for i in range(min(times , int(finger/5) ) + 1): #myPをi回出す場合を考える。 print("the i is "+str(i)) if (finger-i*5)%2 == 0 and times >= (i + (finger - i*5)/2): #myPをi回出して、残りのfingerが2で割り切れるか?そして回数制限は大丈夫か? #自分の出すGCPの回数を求める myP = i myC = (finger - i*5)/2 myG = times - myC - myP #myPがiの時の勝利回数i_winを求める i_win = min(myP , G) + min(myC , P) + min(myG , C) #確認用 print(" myP is "+str(myP)) print(" myC is "+str(myC)) print(" myG is "+str(myG)) print(" i_win is "+str(i_win)) #temp_win = max(i_win , temp_win) #i_win と temp_win の大小比較。temp_winが更新されたらres_myP,Cも変更 if temp_win < i_win : temp_win = i_win res_myP = myP #確認用 res_myC = myC #確認用 print(" temp_win is changed") #確認用 else :#確認用 print(" skipped") #確認用 print("") #確認用 win += temp_win #winの最終結果を求める。 print("win is ...") #確認用 print(win) #出力 print("check is ...")#Fingerの数と出した手の数が合っているか確認 print(finger==(res_myC*2 + res_myP*5)) #確認用