雑記

長文で語りたいこと書いてます。

ABC365 感想

お疲れ様でした〜

ABCD4完 30min(Aで1WA??)でした。パフォ4桁出たので嬉しいですね。

 

 

A-Leap Year

 

問題要約

閏年を判定しなさい。

 

方針

そのままやるだけです。例えば2つ目の条件である4の倍数で〜の部分は、4の倍数でない年を先に判定していればY%4==0などは記述する必要がないです。よってO(1)でこの問題を解くことができました。言うまでもなく、十分高速です。

 

着想

特になし。

 

B-Second Best

 

問題要約

そのまんま。

 

方針

2番目に大きい値を取得して、探索してあげればOKです。よってソートがボトルネックなので、O(NlogN)でこの問題を解くことができました。Nがとても小さいので十分高速です。

 

着想

特になし。

 

C-Transportation Expenses

 

問題要約

数列A={a1,a2…an}があり、∑min(ai,x)≦Mを達成できるような最大のxを求めよ。

 

方針

二分探索を使います。xにおいて、達成可能な値(初期値はたとえば0)と達成不可能な値(初期値はたとえばM+1)を設定して、狭めていけばOKてす。よってO(NlogN)でこの問題を解くことができました。NlogN≦およそ3.5×10^6なので十分高速です。

 

着想

スコアxを達成可能かどうかをO(N)で判定できる場合は、二分探索!

 

D-AtCoder Janken 3

 

問題要約

PRSいずれかの文字のみで構成された文字列Sが与えられるので、以下のルールに沿った文字列Tにおいて、スコアを最大化せよ。

 

ルール

•連続で同じ文字は存在しない

•Siに対応して、Tiで使えない文字がある

 

スコア

•Siに対応して、Tiが特定の文字のときスコアを+1

 

方針

DP!dp[i][i回目に出した手]=スコアにすればOK。

ぱっと思いつくのは貪欲法、つまり勝てるときに勝っておく戦略が思いつきますが、2つの制約により、最適化戦略ではありません。

 

着想

状態が有限で、状態遷移およびそれにともなうスコアの変化が明確な場合はDPが有効です。

 

余談

Dの割にはかなり簡単……?