Round2

また250サブミットできなかった...。

250

有向グラフが与えられるので、双方向に枝がある場所を単方向にするという処理を施して、閉路がなくせるかどうかを判定せよ、という問題。


実は双方向の枝は両方向に除去しても影響しない(うまく除去すれば必ず閉路を発生させないようにできる)ので、単方向の枝だけで閉路があるかどうかを判定すればいいらしい。後はWarshallFloydをやるだけ。

500

あるベクトルの要素を100回まで右にずらす(v[i]=v[i]-1,v[i+1]=v[i+1]+1)ことができるとき、もう一つのベクトルとの内積を最大にせよという問題。


後何回操作できるかと、いくつ前の段階でずらしたか、今何番目の要素を操作しているか、のDPをすれば良い。結果がlongになるらしいので、値が溢れないように適宜注意する必要がある。

1000

見てない...。