摘要: 题目描述 如题,已知一个数列,你需要进行下面三种操作: 1.将某区间每一个数乘上x 2.将某区间每一个数加上x 3.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含三个整数N、M、P,分别表示该数列数字的个数、操作的总个数和模数。 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第 阅读全文
posted @ 2018-03-31 19:45 月亮茶 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。 接下来M行每行包含3或 阅读全文
posted @ 2018-03-31 19:43 月亮茶 阅读(200) 评论(0) 推荐(0) 编辑
摘要: //一维 void add(int x,int p) { while(x<=n)t[x]+=p,x+=(x&(-x)); } int query(int x) { int ans=0; while(x)ans+=t[x],x-=(x&(-x)); return ans; } //二维 void add(int x,int y,int p) { for(in... 阅读全文
posted @ 2018-03-31 19:40 月亮茶 阅读(268) 评论(0) 推荐(0) 编辑
摘要: for(int i=1;i<=n;++i) f[i]=i; int F(int x)//找祖先 { if(x==f[x]) return x; else return f[x]=F(f[x]); }//压缩路径 //合并 int fx=F(x),fy=F(y); f[fx]=fy; 阅读全文
posted @ 2018-03-31 19:36 月亮茶 阅读(94) 评论(0) 推荐(0) 编辑
摘要: while(L<=R) { mid=(L+R)/2; if(ok(mid)) ans=mid,L=mid+1; else R=mid-1; } 阅读全文
posted @ 2018-03-31 19:31 月亮茶 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 代码: 重点:排序方式:(1)左端点所在的块 (2)右端点 先向外扩,再往里缩 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 #define ll long long 6 #defi 阅读全文
posted @ 2018-03-31 18:46 月亮茶 阅读(163) 评论(0) 推荐(1) 编辑