Codeforces Round #179 (Div. 2) C:http://codeforces.com/problemset/problem/296/C

题意:给你一个序列,然后有两种操作,第一种操作是区间加上一个数,第二种操作也是区间操作 1 3 但是这里的区间不是对原序列,而是指第一种操作,1 3,表示把1,2,3三种操作都执行一遍。求所有的操作结束之后原来数组的数。

题解:先考虑一个简单的问题,就是只有第一种操作,就是区间加上一个数。这里没有查询,所以,先加和后加没有区别。所以或一个图就可以知道。我们可以这么搞,用一个vector<int>ll[n],rr[N],ll[i]记录以i为左端更新的那种操作,rr[i]表示以i为右端点的那些更新,as 表示当前数最终应该加的值,当遇到以i开始的时候,as+=这个更新的值,遇到i结尾的时候,as-=这个更新值,这样就可以for一遍就可以了。这样就解决的这个简单的问题,现在来考虑这个题目,也就是二级操作,同理,二级操作也可以了采用这种方式,来统计数操作执行的次数,然后就转化成一级问题,不过此时一级操作的更新值变为原来的值*执行的次数。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1e5+;
long long a[N],b[N],c[N];
int n,m,k;
vector<int>ll[N],rr[N],l[N],r[N];
struct Node{
int l,r;
long long val;
}num[N],temp[N];
int t1,t2;
int main(){
while(~scanf("%d%d%d",&n,&m,&k)){
memset(a,,sizeof(a));
for(int i=;i<=n;i++){
scanf("%I64d",&a[i]);
}
for(int i=;i<=m;i++){
scanf("%d%d%I64d",&num[i].l,&num[i].r,&b[i]);
ll[num[i].l].push_back(i);
rr[num[i].r].push_back(i);
num[i].val=;
}
for(int i=;i<=k;i++){
scanf("%d%d",&temp[i].l,&temp[i].r);
l[temp[i].l].push_back(i);
r[temp[i].r].push_back(i);
}
long long as=;
memset(c,,sizeof(c));
for(int i=;i<=m;i++){
as+=l[i].size();
c[i]+=as;
as-=r[i].size();
}
for(int i=;i<=m;i++){
num[i].val=c[i]*b[i];
}
as=;
for(int i=;i<=n;i++){
for(int j=;j<ll[i].size();j++)
as+=num[ll[i][j]].val;
a[i]+=as;
for(int j=;j<rr[i].size();j++)
as-=num[rr[i][j]].val;
if(i!=n)
printf("%I64d ",a[i]);
}
printf("%I64d\n",a[n]);
}
}

Greg and Array的更多相关文章

  1. Codeforces 295A Greg and Array

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

  2. Codeforces Round #179 (Div. 1) A. Greg and Array 离线区间修改

    A. Greg and Array Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/295/pro ...

  3. Greg and Array CodeForces 296C 差分数组

    Greg and Array CodeForces 296C 差分数组 题意 是说有n个数,m种操作,这m种操作就是让一段区间内的数增加或则减少,然后有k种控制,这k种控制是说让m种操作中的一段区域内 ...

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

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

  5. Codeforces295A - Greg and Array(线段树的成段更新)

    题目大意 给定一个序列a[1],a[2]--a[n] 接下来给出m种操作,每种操作是以下形式的: l r d 表示把区间[l,r]内的每一个数都加上一个值d 之后有k个操作,每个操作是以下形式的: x ...

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

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

  7. Codeforces 296C Greg and Array

    数据结构题.个人认为是比较好的数据结构题.题意:给定一个长度为n的数组a,然后给定m个操作序列,每个操作:l, r, x将区间[l, r]内的元素都增加a,然后有k个查询,查询形式是对于操作序列x,y ...

  8. CodeForces Round #179 (295A) - Greg and Array 一个线段树做两次用

    线段树的区间更新与区间求和...一颗这样的线段树用两次... 先扫描1~k...用线段树统计出每个操作执行的次数... 那么每个操作就变成了 op. l  , op.r , op.c= times* ...

  9. CF296C Greg and Array 查分数组

    题目链接:http://codeforces.com/problemset/problem/296/C 题意:给你n.m.k,表示n个数a[i],m个对数的操作,k个对操作的操作.m个操作:数a[l] ...

随机推荐

  1. delegate和event

    经过查阅资料和自己的理解整理出来的,欢迎大家指教. delegate和event 何时使用: 异步的时候,比如加载完成通知. 需要回调的时候,比如按钮点击.动画播放结束等. 发送事件通知的时候. 比如 ...

  2. ASP.NET操作DataTable

    .创建 datatable DataTable dt=new Datable();//可以给表创建一个名字,tb .给表加个列名: dt.Columns.Add("id", typ ...

  3. mysql 1067 进程意外终止 无法启动

    查看日志 data/XXX.err 发现如下错误 [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous ...

  4. api图片传输,转成64位字符串进行传输

    byte[] getImageByte = HttpHelper.getImageByte(HttpContext.Current.Server.MapPath(("~/UploadFile ...

  5. JavaScript实现多栏目切换效果

    效果: 代码: <!doctype html> <html> <head> <meta http-equiv="Content-Type" ...

  6. 初学HTML5系列二:HTML5新增的事件属性

    Window事件属性: 属性 值 描述 onafterprint  script 文档打印之后运行的脚本. 属性发生于用户设置页面打印并且打印对话框已出现之后. onbeforeprint  scri ...

  7. asp.net - GridView根据linkButton值不同跳转不同页面

    一,当前页面中,前台界面的主要代码: <asp:TemplateField HeaderText="姓名"> <ItemTemplate> <!--根 ...

  8. 对select into表复制的一点思考

    操作系统:Windows 2007 数据库版本:SQL Server 2008 R2 今天写存储过程遇到一个问题,用"Select 1 id,'Boss_he' into A"这样 ...

  9. iOS 获取URL中的参数

    - (NSString *)getParamByName:(NSString *)name URLString:(NSString *)url { NSError *error; NSString * ...

  10. 2014-11-9------- 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...