摘要:
二分答案$x$表示最大的一段的和。 设$f[i]$表示前$i$个最多分几段,满足最大的一段不超过$x$,若$f[n]\geq k$,则可行, 则$f[i]=\max(f[j])+1,sum[i]-sum[j]\leq x$。 用Treap优化DP,$O(n\log^2n)$。 同理再次二分得到最小的 阅读全文
摘要:
从左往右维护两个指针l,r表示离i最近的k个点的区间,预处理出每个点出发的后继,然后倍增。#includetypedef long long ll;const int N=1000010,BUF=20000000,OUT=8000000;int n,k,i,l=1,r,f[N],g[N],t[N],... 阅读全文