要求可以计算前面的操作对后面询问的贡献

BZOJ1176

#include <cstdio>
#include <algorithm>
using namespace std; int tr[],p,ans[],s,q,opt,n,que; struct data1{
int po,x,y,num,v,opt;
}a[],tmp[]; struct data{
int num,po;
}yt[]; int mycomp(const data&a,const data&b){
return(a.num<b.num);
} int lowbit(int po){
return(po&(-po));
} int query(int po){
int ret=;
for (;po;po-=lowbit(po)) ret+=tr[po];
return(ret);
} void add(int po,int num){
for (;po<=p;po+=lowbit(po)) tr[po]+=num;
} void solve(int l,int r){
if (l==r) return;
int mid=(l+r)>>;
solve(l,mid);solve(mid+,r);
int po=l;
for (int i=mid+;i<=r;i++)
if (a[i].opt==){
while (po<=mid&&a[po].x<=a[i].x){
if (a[po].opt==) add(a[po].y,a[po].num);
po++;
}
ans[a[i].po]+=query(a[i].y)*a[i].v;
}
for (int i=l;i<po;i++)
if (a[i].opt==) add(a[i].y,-a[i].num); int po1=l,po2=mid+,po3=l;
while (po1<=mid&&po2<=r){
if (a[po1].x<a[po2].x) tmp[po3++]=a[po1++];else tmp[po3++]=a[po2++];
}
while (po1<=mid) tmp[po3++]=a[po1++];
while (po2<=r) tmp[po3++]=a[po2++];
for (int i=l;i<=r;i++) a[i]=tmp[i];
} int main(){
scanf("%d%d",&s,&q);
while (scanf("%d",&opt),opt!=){
if (opt==){
n++;
a[n].opt=;
scanf("%d%d%d",&a[n].x,&yt[n].num,&a[n].num);
yt[n].po=n;
}else{
int t1,t2,t3,t4;
scanf("%d%d%d%d",&t1,&t2,&t3,&t4);
que++;
a[++n].po=que;a[n].v=;a[n].x=t3;yt[n].num=t4;yt[n].po=n;a[n].opt=;
a[++n].po=que;a[n].v=-;a[n].x=t1-;yt[n].num=t4;yt[n].po=n;a[n].opt=;
a[++n].po=que;a[n].v=-;a[n].x=t3;yt[n].num=t2-;yt[n].po=n;a[n].opt=;
a[++n].po=que;a[n].v=;a[n].x=t1-;yt[n].num=t2-;yt[n].po=n;a[n].opt=;
}
} sort(yt+,yt+n+,mycomp);
yt[].num=-1e9;
p=;
for (int i=;i<=n;i++){
if (yt[i].num!=yt[i-].num) p++;
a[yt[i].po].y=p;
} solve(,n); for (int i=;i<=que;i++) printf("%d\n",ans[i]);
}

CDQ分治的更多相关文章

  1. 【教程】简易CDQ分治教程&学习笔记

    前言 辣鸡蒟蒻__stdcall终于会CDQ分治啦!       CDQ分治是我们处理各类问题的重要武器.它的优势在于可以顶替复杂的高级数据结构,而且常数比较小:缺点在于必须离线操作. CDQ分治的基 ...

  2. BZOJ 2683 简单题 ——CDQ分治

    [题目分析] 感觉CDQ分治和整体二分有着很本质的区别. 为什么还有许多人把他们放在一起,也许是因为代码很像吧. CDQ分治最重要的是加入了时间对答案的影响,x,y,t三个条件. 排序解决了x ,分治 ...

  3. HDU5618 & CDQ分治

    Description: 三维数点 Solution: 第一道cdq分治...感觉还是很显然的虽然题目不能再傻逼了... Code: /*=============================== ...

  4. 初识CDQ分治

    [BZOJ 1176:单点修改,查询子矩阵和]: 1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 200 ...

  5. HDU5322 Hope(DP + CDQ分治 + NTT)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5322 Description Hope is a good thing, which can ...

  6. BZOJ4170 极光(CDQ分治 或 树套树)

    传送门 BZOJ上的题目没有题面-- [样例输入] 3 5 2 4 3 Query 2 2 Modify 1 3 Query 2 2 Modify 1 2 Query 1 1 [样例输出] 2 3 3 ...

  7. BZOJ2683 简单题(CDQ分治)

    传送门 之前听别人说CDQ分治不难学,今天才知道果真如此.之前一直为自己想不到CDQ的方法二很不爽,今天终于是想出来了一道了,太弱-- cdq分治主要就是把整段区间分成两半,然后用左区间的值去更新右区 ...

  8. BNUOJ 51279[组队活动 Large](cdq分治+FFT)

    传送门 大意:ACM校队一共有n名队员,从1到n标号,现在n名队员要组成若干支队伍,每支队伍至多有m名队员,求一共有多少种不同的组队方案.两个组队方案被视为不同的,当且仅当存在至少一名队员在两种方案中 ...

  9. 【BZOJ-3262】陌上花开 CDQ分治(3维偏序)

    3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1439  Solved: 648[Submit][Status][Discuss ...

  10. 【BZOJ-1176&2683】Mokia&简单题 CDQ分治

    1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 1854  Solved: 821[Submit][St ...

随机推荐

  1. Redis分布式集群几点说道

    原文地址:http://www.cnblogs.com/verrion/p/redis_structure_type_selection.html  Redis分布式集群几点说道 Redis数据量日益 ...

  2. 【C#公共帮助类】 Log4net 帮助类

    首先,我们要在Common类库中引用log4net.dll ExtLogImpl.cs using System; using System.Collections.Generic; using Sy ...

  3. centos下升级mysql后遇到的小问题

    记录今天遇到的一个小问题, 写一个app访问接口涉及到通过存储过程反馈多个结果集,但是反回多个结果集的存储过程,调用之后只能反回一个了,而且奇怪的是,即使直接在mysql上同时执行两条查询语句,第一条 ...

  4. 5分钟创建一个SpringBoot + Themeleaf的HelloWord应用

    第一步:用IDE创建一个普通maven工程,我用的eclipse. 第二步:修改pom.xml,加入支持SpringBoot和Themeleaf的依赖,文件内容如下: <?xml version ...

  5. webuploader上传文件,图片

    WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.官方地址:http://fex.baidu.com/webupload ...

  6. Hibernate4.2.4入门(二)——一对多的映射关系

    一.前言 前面我们已经学过hibernate的基础,学会增删改查简单的操作,然而我们数据库中存在着1对多,多对1,多对多的关系,hibernate又是基于ORM基础上的开源框架,可以让我们不用去编写S ...

  7. H5 WebSocket 如何和C#进行通信

    HTML5作为下一代的 Web 标准, 拥有许多引人注目的新特性,如 Canvas.本地存储.多媒体编程接口.WebSocket 等.WebSocket 在浏览器和服务器之间提供了一个基于 TCP 连 ...

  8. 理解jQuery对象$.html

    前面的话 如果要比喻jQuery和原生javascript的关系,我个人认为是自动档和手动档汽车的区别.使用原生javascript,可以知道离合器以及档位的作用:而使用jQuery,则把离合器和手动 ...

  9. iOS版打地鼠游戏源码

    打地鼠游戏源码,游戏是一款多关卡基于cocos2d的iPad打地鼠游戏源码,这也是一款高质量的打地鼠游戏源码,可以拥有逐步上升的关卡的设置,大家可以在关卡时设置一些商业化的模式来盈利的,非常完美的一款 ...

  10. JS框架

    s框架就是将常用的方法进行封装,方便调取使用.一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计.协作构件之间的依赖关系.责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方 ...