スポンサーリンク
先週末のAtCorder ABC261も参加できずでした。
モチベーションあまりないですが、とりあえず問題やってみました。
【A】Intersection
Aなのに難しいと思いました。何回もWA出しました。
パスしたコードはこちら
l1, r1, l2, r2 = map(int, input().split())
if r2 >= r1 >= l2 >= l1:
print(r1 - l2)
elif r1 >= r2 >= l1 >= l2:
print(r2 - l1)
elif r2 >= r1 and l1 >= l2:
print(r1 - l1)
elif r1 >= r2 and l2 >= l1:
print(r2 - l2)
else:
print(0)
【B】Tournament Result
普通の全探索って感じがします。特に問題なくパス。
N = int(input())
an = [(input()) for _ in range(N)]
def is_correct():
for i in range(N):
for j in range(N):
if i == j:
continue
# condition1
if an[i][j] == "W":
if an[j][i] != "L":
return False
# condition2
if an[i][j] == "L":
if an[j][i] != "W":
return False
# condition3
if an[i][j] == "D":
if an[j][i] != "D":
return False
return True
result = "correct" if is_correct() else "incorrect"
print(result)
【C】NewFolder(1)
普通にやっても計算量がO(2*10**5)っぽいので、特に何のひねりもなくパスできるのではと思って、何の工夫もないコードをとりあえず書いてみました。
そしたらパスできました。
N = int(input())
S = [(input()) for _ in range(N)]
exists_s = {}
for s in S:
if exists_s.get(s) is not None:
result = f"{s}({exists_s[s]+1})"
exists_s[s] += 1
else:
result = s
exists_s[s] = 0
print(result)
C問題がこれでいいのでしょうか。それともこう思うこと自体、AtCorderに毒されているのでしょうか。
【D】Flipping and Bonus
問題見て、「あ、これDP(動的計画法)だ。できないやつだ。」と思って、早々に諦めました。
DPは昔、カエルの問題で少し勉強したことあるのですが、その類題とかまったくやっていないので、全然身につけられていないです。
どこかで問題解きまくらないといけないと思いながら、いまだにでできてないです。(思うだけで行動に移せないダメ人間・・・)
まとめ
AtCorder ABC261をやってみた感想でした。A,B,Cの3つはできましたが、いつもより簡単だと思いました。
C問題が何のひねりもなく解けるパターンもあるということを知り、C問題だからといって、すぐに諦めたらいけないなと思いました。
今日も参加できそうにありません。ここのところ、週末は飲んでばかりですが、来週は予定ないので来週こそ参加したいです。。。
スポンサーリンク
