cumulative-sum初めて撃墜というものをしました。5000$)が与えられる。この数字の列を適当に区切り、それぞれを10進数として解釈し、狭義単調増加な数列を作る。そのような区切り方は何通りあるか。$10^9+7$で割った余りを答えよ。rolling-hash。l以降で[l,r)の区間の文字列を最初の数字として使ってできる数列の数}”$として、とても愚直にdpをすると$O(n^4)$になる。int}[r,x)$の判定の部分で文字列長$n$がかかるためである。累積和を取っておくことで$x$が落とせる。文字列比較の際に$O(n)$かかってしますのは、111111...111のようなケースである。文字列が一致していると全て文字列を捜査しなければならない。一致していることを$O(1)$で判定できればよいため、事前に文字列の各区間のhash値を計算しておき、これが一致するなら判定を省略すればよい。hashが衝突してしまうと当然WAとなるような解法であることには注意。他にも色々解法は存在する。