ABC128(3完)
ハロートナミです。
ABC128やりました。ひどいペースで3完しました。
昨日との差がありすぎる
ネタバレがあります。
A
考え
いつもの感じ
書いたソース
A,P = map(int,input().split()) print((P+A*3)//2)
なんかこう、一番簡単な問題らしい簡単さだなと思いました
B
考え
えーなんか日本語が難しい。実装もBの割にめんどうな気がする
都市名でソートした後、都市ごとにソートをする
書いたソース
N = int(input()) sp = {} for i in range(1,N+1): s, p = input().split() p = int(p) if s in sp: sp[s].append((p,i)) else: sp[s] = [(p,i)] sp = sorted(sp.items(), key=lambda x:x[0]) for x in sp: s, v = x v.sort(key=lambda x:x[0], reverse=True) for p,i in v: print(i)
えーほんとにこんな複雑なの?と思わないでもない
でも他に思いつかなくて……
C
考え
多分最悪でも2^10=1024回パターンぐらいしかないので全探索が出来そう。
全探索のうまい書き方が分からん。1と0だし2進数とか使って良い感じに出来るか?出来んな~を30分ぐらいやりました
書いたソース
import itertools N,M = map(int,input().split()) ks = [] for _ in range(M): ks.append(input().split()) pList = list(input().split()) result = 0 was = [] cases = list(itertools.product(['1','0'], repeat=N)) for case in cases: light = 0 for p,x in zip(pList,ks): k = x[0] s = x[1:] oncount = 0 for c in s: if case[int(c)-1] == '1': oncount += 1 if oncount%2 == int(p): light += 1 if light == M: result += 1 print(result)
全パターンをitertoolsで吐けるのを思いつくまでに30分以上かかったのが敗因という感じがする
D
考え
え……?(思考停止)
全探索風味のやつしか思いつけなかった。しかも時間が間に合わず終了6秒後に提出してLTEでした。むずないこれ
書いたソース
import copy N,K = map(int,input().split()) vList = [int(x) for x in input().split()] def dfs(vv, DD, k): v = copy.deepcopy(vv) D = copy.deepcopy(DD) value = sum(v) if k == 0: return value if len(D) > 0: v.extend([D[0]]) a = dfs(v, D[1:], k-1) v = v[:-1] v.extend([D[-1]]) b = dfs(v, D[:-1], k-1) v = v[:-1] else: a = 0 b = 0 if len(v) > 0: m = [min(v)] idx = v.index(m[0]) del v[idx] D.extend(m) c = dfs(v, D, k-1) D = D[:-1] m.extend(D) d = dfs(v, m, k-1) else: c = 0 d = 0 return max(value, a,b,c,d) result = dfs([], vList, K) print(result)
ひどい。
EとF
考え
見てすらいない(よくない)
結果
いやー50分かけて3完とか終わりでしょと思ったんですがそこまでダメージ無く終われました。まあ下がってんですけど
水色なれるかなと思ったけどそんなに甘くなかった。というか今回BとCが難しすぎませんか?そうでもないか はい
はー次のABCは頑張って水色なりたいですね
おわり