はじめに
こんばんは、tax_freeです。前回のABC(ABC157,158)は忘れていて参加できませんでした。もったいない。
今回は、ARC相当のコンテストでした。私は、A,Bの二つしか解けませんでした。とても悔しい。
A問題
考えたこと
最初は問題文を読み間違えていて3WAも出してしまいました。今回の敗因はここ。
問題文の'hii'はhitachi文字列ではありませんを完全に読み落していました。
最初は、'hi'が含まれていればよいと思ったので
'hi' in [文字列]
でif文にかけていました。
それだけでは、'hii'に対応できないので改善しました。
s = str(input())
checker = True
if 'hi' not in s:
checker =False
while 'hi' in s:
s = s.replace('hi','XX')
for i in range(1,len(s)-1):
if s[i] =='X':
if s[i-1] == 'i' or s[i-1] == 'h'or s[i+1] == 'i' or s[i+1] == 'h':
checker = False
break
if checker:
print('Yes')
else:
print('No')
前後の文字まで判別してACが出ました。
A問題だからと油断していました。
B問題
考えたこと
今までの最小金額と今の最小金額を比べて更新していけばいいじゃんという指針で解きました。
a, b, m = map(int,input().split())
a_l = list(map(int,input().split()))
b_l = list(map(int,input().split()))
m_l = []
for i in range(m):
m_l.append(list((map(int,input().split()))))
m_l.sort(key=lambda x: x[2])
a_l_s = sorted(a_l)
b_l_s = sorted(b_l)
ans = a_l_s[0] + b_l_s[0]
for j in range(m):
price = a_l[m_l[j][0]-1] + b_l[m_l[j][1]-1] - m_l[j][2]
if price < ans:
ans = price
print(ans)
多次元配列のsortの仕方を毎回忘れてしまうので、覚える。
解けなかったD問題
考えたこと
与えられている時間$t$内であればいいので、whileで回せばいいのではと思い書いた。TLEだけでなくWAも出てきたので、指針が間違えている。最後はやけくそになって3回くらいsubmitしてた
まとめ
少しでも競プロから離れていると、すぐに解けなくなることを実感した。学校が休みになったので競プロの勉強もします。
おやすみなさい