Official

B - Sum of CC Editorial by nok0


はじめに生成されるグラフの特徴を観察しましょう.

実験などを行うと,連結成分は数列の区間と対応していることがわかります.つまり,頂点 \(i\) と頂点 \(i+k\) が連結な場合,頂点 \(i\) と頂点 \(i+1,\ldots,i+k-1\) も連結になっています.

更に,頂点 \(i\) と頂点 \(i+1\) が連結にならない必要十分条件が,\(\min(A_1,\ldots,A_i )> \max(A_{i+1}, \ldots, A_N)\) であることも分かります.

これは \(N\) に関する数学的帰納法により証明できます.

この事実より,連結成分数は \(1+ \) (頂点 \(i\) と頂点 \(i+1\) が連結でないような頂点 \(i \ (1\leq i \leq N-1)\) の個数) として求めることができます.

主客転倒を用いると,頂点 \(i\) と頂点 \(i+1\) が連結でないような数列の個数を各 \(i\) について求められれば良いです.

連結にならない必要十分条件の左辺,つまり \(\min(A_1,\ldots,A_i )\) の値を全探索すれば,頂点 \(i\) と頂点 \(i+1\) が連結でない数列の個数を \(\mathrm{O}(M)\) で求められます.

以上よりこの問題を \(\mathrm{O}(NM)\) で解くことができました.

Bonus: \(N\leq 2000, M< 998244353\) でも解けます.

posted:
last update: