问题 K: 序列的区间操作【区间加法】【思维】【数学】
2017-03-13 13:14
281 查看
问题 K: 序列的区间操作
时间限制: 2 Sec 内存限制:256 MB
题目描述
给你[1, N]共N个数,和Q次操作,每次操作将区间[x, y]里面的数全加v。要求你按顺序输出Q次操作后这N个数。
输入
有多组测试数据,请处理到文件结束。每组数据给定两个整数N和Q,接下来有Q行,表示Q次操作。每行有三个整数x、y、v。
后台数据保证均满足 1 <= N, Q <= 10^7 且 1 <= x <= y <= 10^7,1 <= v <= 10^7。
输出
每组数据输出N个整数,每两个整数之间有一个空格,最后一个数后面没有空格。由于最后的数可能比较大,你只需要输出% 666666的结果。
样例输入
1 1 1 1 3 2 2 1 1 3 2 2 1
样例输出
4 4 3
思路 :区间加法 x-y 的区间上加减数。 定义一个数组专门来储存 每一个位上加了多少。没必要x到y的区间上都记录(肯定超时)
举个栗子 2-5 的区间上加10 就是说2-5区间上的数字 都加上10 。但是6是没有加这个10的,所以5和6 正常情况下差的为1 ;现在却差了10+1 ;
说明 从6 开始都要减10 但是7 8 9的这些6 之后数字是按照 6 + 1 ,7+1 , 8+1 得到的所以之后的数字就不用特意的-10了
代码
#include<string.h> #include<stdio.h> #include<algorithm> #include<math.h> #include<queue> #include<stack> #define inf 0x3f3f3f #define M 10000000+10 #define mod 666666 using namespace std; long long shu[M]; long long jia[M]; // 因为 在取模前每个数子都可能大于int型
int main() { int n,q; while(~scanf("%d%d",&n,&q)) { memset(jia,0,sizeof(jia)); for(int i=0;i<q;i++) { int x,y,v; scanf("%d%d%d",&x,&y,&v); jia[x]=jia[x]+v; jia[y+1]=(jia[y+1]-v); } shu[1]=1+jia[1]; for(int i=2;i<=n;i++) { shu[i]=shu[i-1]+1+jia[i]; //注意这里不能够取模,要不然会影响之后数字 } printf("%lld",shu[1]%mod); //要在全部都计算好 之后在取模。 for(int i=2;i<=n;i++) printf(" %lld",shu[i]%mod); putchar ('\n'); } return 0; }
相关文章推荐
- 问题 K: 序列的区间操作
- HYSBZ 1798(Ahoi2009) Seq 维护序列seq(区间更新+加法乘法混合操作)
- 【HPU OJ 1310 】序列的区间操作 【思维】
- Hrbust 1598 序列问题III【思维】
- 数学建模有关DNA序列k-mer index的问题
- 2015深圳杯数学建模-DNA序列k-mer index问题
- 问题 : 谷神的赌博游戏(数学思维+排列组合)
- 序列的区间操作
- 数学计算模拟类问题:加法,除法和幂,注意越界问题。题 剑指Offer,Pow(x, n) ,Divide Two Integers
- 2015年“深圳杯”数学建模夏令营-B题:DNA序列的k-mer index 问题
- HDU:4521 小明系列问题——小明序列(LIS-n*logn解法变形+思维+技巧)
- 【CodeForces - 920F 】SUM and REPLACE 【线段树的区间操作+思维】
- 【BZOJ 1858】【SCOI 2010】序列操作【区间线段树】
- 统计工龄 模拟EXCEL排序 银行排队问题之单队列多窗口问题 银行业务队列简单模拟 堆栈操作合法性 两个有序序列的中位数
- 【bzoj1858】[Scoi2010]序列操作 线段树区间合并
- 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
- 用数学思维解决高级阶乘问题
- 树状数组区间加法&区间求和操作
- [bzoj2962]序列操作_线段树_区间卷积
- HDU4521:小明系列问题——小明序列(推广LIS(带区间))