SRM埋め(3)

SRM 714 easy
easyはこれくらいの難易度が良いよなぁ。何ターン目までに消さないといけないという条件が求まる。

SRM 713 easy
難しい。保留->わかったんですけど、easyにしては実装複雑すぎでは?と思ってkmjpさんの解説記事見たら全く同じでおったまげました。(p^d)^a=(p^e)^bみたいにpという一番簡単な形で累乗を表せばあとは適当にgcd取りながら計算していけばいいです。しかしこれがめんどくさい上に、工夫しないとO(n)になって死んでしまう。大変。

SRM 712 easy
良問。まず1ターン行動するとsumは2倍になることから何回行動するかはわかる。実験してみると2項係数がかかった式になるのでできる。Combinationをバグらせて遅かった。コード貼っときます。

ll C(int a, int b) {
	ll tmp = 1;
	rep(i, 0, b) {
		tmp *= (a - i);
		tmp /= (i + 1);
	}
	return tmp;
}

簡易版ですね。

SRM 711 easy
まずnがk桁1が連続するか見る。そうでなかったらk桁連続するところを1にしてそれ以降0にするのが最適。最初バグったコードを投げたけどなぜかsys test通った(えぇ…)

SRM 710 easy
できたんだけどこういう解法が怪しいやつは得意じゃない…。typeAとtypeBは可逆です。typeAのみでN-1に石を全部置けたらあとはtypeBでTに戻せばいいです。間隔的にはN-1以外のholeに作用させまくれば良さそうですが、実験してみるとそれでうまくいきそうなことがわかります。

SRM 709 easy
Aの要素が50以下なのでYのうち影響を及ぼすのは下6桁のみです。よってbitdpできます。

SRM 708 easy
constructive多すぎでは…similarityは減らしたくて、そうすると長さ1の文字列を並べるのが良いです。後はwxwxwx....みたいな文字列で帳尻合わせします。

SRM 707 easy
へびみたいにpathを蛇行させればいいです。実装まあまあ工夫できて結構早く通せた。

SRM 706 easy
混乱したのもあるけど無駄にdijkstra書いたせいで遅くなってしまった。ベルマンフォードは更新される数だけループする以外は、dijkstraの更新と同じことをちゃんと覚えておきましょう。あとtupleの使い方も覚えておきましょう。get < idx > (tuple)ですよ。

SRM 705 easy
グラフ張ってループあるか見るだけですがこういうめんどくさいのはSCCにやらせましょう。

SRM 704 easy
あまりバグらせることなくうまく出来たなぁと思ったけどみんな早すぎ。直径を最初に取ればいいです。よくあるやつ。

SRM 703 easy
あーこれtopcoder40問目のeasyだったのに誤読+全然思いつけなくてつらかった。sortして、前の方から順番に辺を張るみたいなことをすればいいです。