题意:

有数列a[ ]; 操作op[ ] = { l, r, d }; 询问q[ ] = { x, y };

操作表示对a的[ l, r ] 区间上每个数增加d; 询问表示执行[ x, y ]之间的op.

打印最终数列.

思路:

用两次差分数列, 先处理出对于每个op调用了几次, 再对数列执行操作.

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. using namespace std;
  5. const int MAXN = 1e5+5;
  6. typedef long long ll;
  7. ll a[MAXN],sum[MAXN];
  8. ll d[MAXN],delta[MAXN];
  9. int l[MAXN],r[MAXN];
  10.  
  11. int main()
  12. {
  13. int n,m,k;
  14. scanf("%d %d %d",&n,&m,&k);
  15. for(int i=1;i<=n;i++)
  16. scanf("%I64d",a+i);
  17. for(int i=1;i<=m;i++)
  18. scanf("%d %d %I64d",l+i,r+i,delta+i);
  19. int x,y;
  20. while(k--)
  21. {
  22. scanf("%d %d",&x,&y);
  23. d[x]++;d[y+1]--;
  24. }
  25. for(int i=1;i<=m;i++)
  26. {
  27. sum[i] = sum[i-1] + d[i];
  28. delta[i] *= sum[i];
  29. }
  30. memset(d,0,sizeof(d));
  31. memset(sum,0,sizeof(sum));
  32. for(int i=1;i<=m;i++)
  33. {
  34. if(!delta[i]) continue;
  35. d[l[i]] += delta[i];
  36. d[r[i]+1] -= delta[i];
  37. }
  38. for(int i=1;i<=n;i++)
  39. {
  40. sum[i] = sum[i-1] + d[i];
  41. a[i] += sum[i];
  42. printf("%I64d%c",a[i],i==n?'\n':' ');
  43. }
  44. }

[CF 295A]Grag and Array[差分数列]的更多相关文章

  1. CF 295A Greg and Array (两次建树,区间更新,单点查询)

    #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm& ...

  2. [CF 276C]Little Girl and Maximum Sum[差分数列]

    题意: 给出n项的数列A[ ], q个询问, 询问 [ l, r ] 之间项的和. 求A的全排列中该和的最大值. 思路: 记录所有询问, 利用差分数列qd[ ], 标记第 i 项被询问的次数( 每次区 ...

  3. CF460C Present (二分 + 差分数列)

    Codeforces Round #262 (Div. 2) C C - Present C. Present time limit per test 2 seconds memory limit p ...

  4. hdu4970 Killing Monsters (差分数列)

    2014多校9 1011 http://acm.hdu.edu.cn/showproblem.php?pid=4970 Killing Monsters Time Limit: 2000/1000 M ...

  5. UVALive 4119 Always an integer (差分数列,模拟)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Always an integer Time Limit:3000MS     M ...

  6. Codeforces 295A Greg and Array

    传送门 A. Greg and Array time limit per test 1.5 seconds memory limit per test 256 megabytes input stan ...

  7. CF 1008C Reorder the Array

    You are given an array of integers. Vasya can permute (change order) its integers. He wants to do it ...

  8. LA 4119 (差分数列 多项式) Always an integer

    题意: 给出一个形如(P)/D的多项式,其中P是n的整系数多项式,D为整数. 问是否对于所有的正整数n,该多项式的值都是整数. 分析: 可以用数学归纳法证明,若P(n)是k次多项式,则P(n+1) - ...

  9. CodeForces Round #179 (295A) - Greg and Array

    题目链接:http://codeforces.com/problemset/problem/295/A 我的做法,两次线段树 #include <cstdio> #include < ...

随机推荐

  1. ubuntu各种软件安装-装机整套系列

    首先声明,本人系统ubuntu 14.04.1 LTS, 以下所有软件均安装于该系统. 一. 首先在windows下删除ubuntu,删除方法如下: 1.进入win7,下载个软件MbrFix,放在C: ...

  2. Java导出数据生成Excel表格

    事先准备: 工具类: package com.wazn.learn.util.export; import java.sql.Connection; import java.sql.DriverMan ...

  3. Learn to Create Everything In a Fragment Shader(译)

    学习在片元着色器中创建一切 介绍 这篇博客翻译自Shadertoy: learn to create everything in a fragment shader 大纲 本课程将介绍使用Shader ...

  4. sql 和xml

    一·常用基本功能 表结果: 1. 1 <row> 2 <ID>1035</ID> 3 <Rate>6.12</Rate> 4 <Dat ...

  5. 【BZOJ 2039】 2039: [2009国家集训队]employ人员雇佣 (最小割)

    2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1511  Solved: 728 Descri ...

  6. BZOJ3052 [wc2013] 糖果公园 【树上莫队】

    树上莫队和普通的序列莫队很像,我们把树进行dfs,然后存一个长度为2n的括号序列,就是一个点进去当作左括号,出来当作右括号,然后如果访问从u到v路径,我们可以转化成括号序列的区间,记录x进去的时候编号 ...

  7. Codeforces 1129 E.Legendary Tree

    Codeforces 1129 E.Legendary Tree 解题思路: 这题好厉害,我来复读一下官方题解,顺便补充几句. 首先,可以通过询问 \(n-1​\) 次 \((S=\{1\},T=\{ ...

  8. Codeforces Round #478 (Div. 2) ABCDE

    A. Aramic script time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  9. bzoj1393 旅游航道

    Description SGOI旅游局在SG-III星团开设了旅游业务,每天有数以万计的地球人来这里观光,包括联合国秘书长,各国总统和SGOI总局局长等.旅游线路四通八达,每天都有总躲得载客太空飞船在 ...

  10. 05-树6. Path in a Heap (25) 小根堆

    05-树6. Path in a Heap (25) Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.patest.cn/contes ...