AGC033(1完)
ハロートナミです。
AGC033やりました。瀕死の1完です。泣きました
ネタバレがあります。
A
考え
全然分からんけど制限1secって書いてあるしW*Hが10**6あるので破滅では?
書いたソース
H,W = map(int,input().split()) A = [] for i in range(H): A.append(input()) blacks = [] for i , row in enumerate(A): for j in range(W): if row[j] == '#': blacks.append((i,j)) result = 0 for i , row in enumerate(A): for j in range(W): if row[j] == '.': cache = 10**5 for bi, bj in blacks: x = max(bi,i) - min(bi,i) + max(bj, j) - min(bj,j) if x < cache: cache = x if cache > result: result = cache print(result)
TLEです。
まあ黒と白の全組み合わせ試してるんで当然なんですが
これ以上うまいやり方が思いつけず多分60分ぐらい溶かして諦めました。
B
考え
上下左右の4方向それぞれを目指して進めたり戻したりする
追記
今回通したBの方法巷で嘘解法と言われており、ダメです。
ダメなのを通すなVS通るならOKで荒れてるっぽくてなんか大変
書いたソース
H,W,N = map(int,input().split()) sr, sc = map(int,input().split()) S = input() T = input() L = sc-1 R = W-sc U = sr-1 D = H-sr for s, t in zip(S,T): if s == 'L': L -= 1 elif s == 'R': R -= 1 elif s == 'U': U -= 1 elif s == 'D': D -= 1 if min(L,R,U,D) < 0: print('NO') quit() if t == 'L' and R < W-1: R += 1 elif t == 'R' and L < W-1: L += 1 elif t == 'U' and D < H-1: D += 1 elif t == 'D' and U < H-1: U += 1 print('YES')
ゴリゴリのゴリ
終了5分前まで考えてギリギリで何とか通しました。1完です。
AGC難しい。
結果
Aだけ解いた人たちが結構いたらしく(マジ?)そこそこのパフォーマンスがついて無事レートが上がりました。
今回140分間ずっと"このままだとレートが下がる……パフォーマンス300とか出る……"みたいな事考えて冷え冷えだったので
B通った瞬間声出ましたし、諦めないで良かったですね。
あと4回ぐらいコンテスト出たら水色なれるかな……頑張りましょう
おわり