摘要:
http://poj.org/problem?id=2750之前做过类似的题 把一段的左连续最大、最小 右连续最大及最小及中间的连续更新出 就可以算出这段最大的连续和注意不能全部加上 加上一特判 如果最大和是全部数的和就减去这段最小的和 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 struct node 9 {10 int va,lmax,rmin,lmin,rmax,smax,smin;11 }p[N>1;33 bui... 阅读全文
摘要:
http://poj.org/problem?id=2886单点更新 初始位置都是1 如果这个人出去 位置变为0 利用线段树求区间k值 k值的计算如下如果这个数值是负的 那么下一个人的就是((k-1+p[id].d)%n+n)%n+1; 如果是正的 下一个人就是(k-1+p[id].d-1)%n+1; 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 500010 9 struct node10 {11 char s[12];12... 阅读全文