バイトの競プロメモ

主に競技プログラミング

AtCoder Regular Contest 157 C - YY Square

C - YY Square

 

メモ

 

グリッド上を通った経路について、スコアがあるものの^2で定まる時

そのスコアの合計を求めろという問題

 

スコアの計算がそのままでは複雑で、dpで漸化的に扱いにくい。

合計の合計という形にできれば、寄与について考えられる

 

解法1

n^2 = 1+3+5+ ... + 2n-1

で書けるので

各辺を使ったときに自分の前までに何回yyがあったかによって

その辺の寄与が分かる。

また、自分の前までのyyの回数の合計について

自分の全体での寄与が分かる形なので計算できる

 

解法2

dp[i][j] を1,1からi,jまでの問題とみなした時の答え

として、漸化的に^2のスコアを求める方法

 

各dp[i][j]まで持たれているパスの状態について、

sigma(x^2)とした時

次の遷移でsigma((x+c)^2)という形になっているため、

x^0, x^1, x^2をそれぞれ計算しておけば遷移できる。

 

あるいは、積の和典型で

今までのyyに印1, 印2を押す場合の数を考えるとすると

新しくyyが増えた時に、今までのに(0,1,2)回押していて、あたらしく増えた 

yyに何回押すかという風に考えると

x^2というのが自然に複数の物の合計として扱えて遷移できる