TonamiLog

ゆるキャン△とスノーボードとオタク

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難しい。

結果

f:id:Thiroyuki:20190504235028p:plain
Aだけ解いた人たちが結構いたらしく(マジ?)そこそこのパフォーマンスがついて無事レートが上がりました。
今回140分間ずっと"このままだとレートが下がる……パフォーマンス300とか出る……"みたいな事考えて冷え冷えだったので
B通った瞬間声出ましたし、諦めないで良かったですね。
あと4回ぐらいコンテスト出たら水色なれるかな……頑張りましょう

おわり