geam1113’s diary

主にAtcoderのコンテストの備忘録を書きます。AtCoder緑と水色を行ったり来たりしています。

ABC220 参加記録

コンテスト中AC:A,B,D

 

C - Long Sequence

Aの合計をSとすると、Xn個のSAm番目の要素までの和で構成されているはずです。すなわち、

X = S+...+S+A_1+...+A_m

です。

nは、 n \leq \frac{X}{S}を満たす最小の整数で、mは順番に足していけば求まります。

 

コンテスト中にACできなかったのですが、実装に問題がありました。

マクロSUMを以下のように登録していました。

#define SUM(v) accumulate((v).begin(), (v).end(), 0)

しかし、long long型では以下のようにする必要があります。

#define SUM(v) accumulate((v).begin(), (v).end(), 0LL)

 

こういうミスがあるとなかなか気づけませんでした。

提出コード:https://atcoder.jp/contests/abc220/submissions/26169170

 

D - FG operation

各操作後の状態は0〜9までしかないので、DPできます。

dp[i][j]:=i回目の操作で、余りがjであるものの総数

遷移は、i回目の操作結果から、i+1回目の操作を考えます。

 

i回目の操作結果がjなら、j+A_{i+1}\ mod\ 10j\times A_{i+1}\ mod\ 10が考えられるので、

dp[i+1][j+A_{i+1}\ mod\ 10]+=dp[i][j]

dp[i+1][j\times A_{i+1}\ mod\ 10]+=dp[i][j]

となります。

初期値は、dp[0][A_1]=1です。

 

答えはdp[N][0],...,dp[N][9]を順に出力します。 

提出コード:https://atcoder.jp/contests/abc220/submissions/26154156

 

F - Distance Sums

全方位木DPというところまでわかったのですが、用意してあったライブラリの内容の本質を理解しておらず、実装が間に合いませんでした。

別記事にまとめたいと思います。