はじめに
東京行ってきたんですけど(ABCの翌日)色んなとこ行って、楽しかったです
ほぼ初東京の田舎者の思い出話 全く関係ないので見なくていいです
長野駅から新幹線で、上野まで行ってとりあえず渋谷駅に行った。(軽井沢駅で30分足止め食らった) ハチ公の前で写真取ろうとしたら、外国人がたくさんいて、しょうがないから尻尾のあたりに立って写真撮って、その後スクランブル交差点をわたった。その後六本木ヒルズに行って、東京の都会ぶりを見渡す
まだ自分が住んでいるとこの標高より低いとはず(六本木ヒルズが)
で秋葉原に行って昼飯食って、VimConfがやってるみたいだから、会場の前で記念撮影した。
誰かしら有名人に会うかなーと思っていたんですけど、そんなはずはなく、誰にも会いませんでした
その後、秋葉原を散策して、でっかいヨドバシカメラに行って、HHKBを探したけどなかった
その後丸ノ内線乗って、国会議事堂前で写真取った一応、議事堂一周した。
で東京駅に行って、東京駅と皇居を外側から見渡す(東京から皇居まで往復1.2キロ)
そしてまた丸ノ内線乗って(丸ノ内線4回乗りましたw)西新宿に行って 都庁を見る(結構歩いた)
そして新宿駅まで歩いて、新宿駅の小田急で鳩サブレを買い
そして中央線に乗って東京に戻ってスタバで休憩して駅弁買って、帰りの新幹線の中で食べました(新宿駅の人混みがすごかった)
皆さん都会に、疲れたら田舎に来て休息しに来てください
長野県では冬ウィンタースポーツが盛んです。寒いですがぜひ来てください(寒いときは-10度行きます)
宣伝するな
やったー3完だけで緑perf、レート上がったラッキー(楽観的)
なんかABの実装に手こずり時間ロスして、Cはいい感じの解法が思いついたので、それをしたらACした
Dは尺取り法だってわかってたけど、実装ミスって最後までACできなかったです
さて本題
使っているライブラリ 前回から変えてません 参考にどうぞ
github
A問題
問題文を要約
前半が1で、真ん中の文字が/で、後半の文字が2だと判定してくださいという問題
C問題と同じ趣旨らしい
普通に実装したけど、少し時間がかかった
acコード(ライブラリ抜粋) 全文
クソコードです 参考にしないでください
N = ii()
S = s()
c = 0
for i in range(N):
if S[i] == "1":
c += 1
else:
break
if S[c] != "/":
print("No")
exit()
a = 0
for i in range(c + 1, N):
if S[i] == "2":
a += 1
else:
break
if c == a and c + a + 1 == N:
print("Yes")
else:
print('No')
B問題
問題文を要約...するのがめんどくさい
D問題と趣旨は似ていた
普通に実装してACした
acコード(ライブラリ抜粋) 全文
S = s()
if len(S) % 2 != 0:
print("No")
exit()
D = defaultdict(int)
for s in S:
D[s] += 1
for i in D.values():
if i == 0 or i == 2:
continue
else:
print("No")
exit()
i = 1
while i <= len(S) // 2:
if S[(2 * i) - 2] == S[(2 * i) - 1]:
pass
else:
print("No")
exit()
i += 1
print("Yes")
C問題
問題文を要約
$S$の中からA問題の文字列の条件を満たす。最大の部分文字列の長さを求めてください
普通にやると$O(N^2)$でTLEするので、/を見つけたら左右に条件を満たさなくなるまで、左右を広げ続ければいい
そしてansを更新すればいい
計算量は$O(N)$です
acコード(ライブラリ抜粋) 全文
N = ii()
S = s()
ans = 1
for i in range(N):
if S[i] != "/":
continue
a, b = i - 1, i + 1
while 0 <= a and b < N:
if S[a] == "1" and S[b] == "2":
a -= 1
b += 1
else:
break
if a == i - 1 and b == i + 1:
continue
ans = max(ans, (i - a) * 2 - 1)
print(ans)
D問題
問題文を要約
$A$の中からB問題の条件を満たす、最大の部分列の長さを求めてください
尺取り法までは行けたけど、色々ミスって結局ACできなかった
後日尺取り法で書いたらACした
after-contest caseが大量に作成されていて笑った
最後に
レートは30ぐらい上がった。
やっと茶色上位勢になった
4完していたらもうちょっとperfが出ていたな、と思うとDの目の付け所を間違えた