文学徒が競プロをするブログ

競技プログラミングの精進を記録していきます

ABC135 F Strings of Eternity

やる

問題文

読んで

考察

自明に単調性があるので、二分探索で決め打てそうなことがわかります。問題は決め打ったときの判定なので、まずはそこを考察していきます。

ひとまず愚直に考えます。 t x回連結した文字列 Tを作ります。では s y回連結した文字列 S Tの部分文字列を持ちますか?という問題がめっちゃ速く解けると嬉しいですね。

厄介なのは s y回連結するというところです。 xの方は二分探索で決め打つので良いのですが、 yはそう上手くいきません。何か上手く考えると一意に定まりそうな気配もしますが、愚直に時間をかけてもアレなんですよね...。ひとまず置いておきます。

二分探索で判定は、愚直にやると筋が悪い気がしてきたので別方面を考えます。

何も思いつかないので解説を見ました。あ~~~~文字の関係をグラフとして解釈するやつ三回は解いたのに忘れてたなあ.....。  S tの大体二倍くらいの長さにしてあげれば良くて、あとはロリハなり何なりで辺張って、ループがなければUFして連結成分の最大値取っておしまい。

ループがあったら -1にして、そもそも辺が張られていなければ 0

うわ~かしこい。言われれば素直に出来るし、解けるべきだったなあと......