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

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. Angular2 小贴士 Name

    Angular2 正式版已经发布了一个月了,我也是通过各种方式在进行验证是否可以满足我们的需求,今天我就发现了一个问题.现在我们来一起说明一下,这个可能不算是bug,而应该需要我们记住就可以了. 我们 ...

  2. C# 条件编译

    本文导读: C#的预处理器指令从来不会转化为可执行代码的命令,但是会影响编译过程的各个方面,常用的预处理器指令有#define.#undef.#if,#elif,#else和#endif等等,下面介绍 ...

  3. C# Invoke或者BeginInvoke的使用

    在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate. 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是do ...

  4. AutoResetEvent ManualResetEvent WaitOne使用注意事项

    公司还用这些老家伙没办法,用了几次这俩.每次用都要重新翻一下A片. 好好的A片楞是翻译成了禅经.把这东西弄成个玄学.微软也是吃枣药丸.参考了@风中灵药的blog.写的牛逼. 还有一些公司用到的风中灵药 ...

  5. Error:Execution failed for task ':app:clean'.

    运行时出现 Error:Execution failed for task ':app:clean'. 错误,Builld->Clean Project即可.

  6. 【转】zigbee终端无法重连的问题解决

    zigbee终端无法重连的问题解决 1.zigbee重连的原因 (1)zigbee由于各种原因的干扰导致信号太差而掉线. (2)协调器重启. 2.zigbee终端重连的处理 (1)zigbee掉线后会 ...

  7. Java中的多线程你只要看这一篇就够了

    学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:279558494 我们一起学Java! 引 如果对什么是线程.什么是进程仍存有疑惑, ...

  8. 如何在ASP.NET Web站点中统一页面布局[Creating a Consistent Layout in ASP.NET Web Pages(Razor) Sites]

    如何在ASP.NET Web站点中统一页面布局[Creating a Consistent Layout in ASP.NET Web Pages(Razor) Sites] 一.布局页面介绍[Abo ...

  9. app端上传文件至服务器后台,web端上传文件存储到服务器

    1.android前端发送服务器请求 在spring-mvc.xml 将过滤屏蔽(如果不屏蔽 ,文件流为空) <!-- <bean id="multipartResolver&q ...

  10. iOS App 不支持http协议 App Transport Security has blocked a cleartext HTTP (http://)

    目前iOS已经不支持http协议了,不过可以通过info.plist设置允许 App Transport Security has blocked a cleartext HTTP (http://) ...