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

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. 微信小程序基础入门

    准备 Demo 项目地址 https://github.com/zce/weapp-demo Clone or Download(需准备GIT环境) $ cd path/to/project/root ...

  2. Basic Tutorials of Redis(7) -Publish and Subscribe

    This post is mainly about the publishment and subscription in Redis.I think you may subscribe some o ...

  3. 在CentOS 7上安装.NET Core R2跑Hello World

    前言 在上个月.NET Core出了最新版本预览版,只是在Window系统上试验了一下.原本想等发布正式版的时候在linux系统上试试,可能还需要一段时间,刚好有空可以折腾一下. 由于之前安装的Ubu ...

  4. 【MVVM DEV】DataColumn中的TextBox与ComboBox的并存

    一.前言       在WPF编程中,有时候我们使用DataGrid会需要在一个DataColumn中既有TextBox,也要有ComboBox或者TextBlock等其他数据显示样式. 这个时候我们 ...

  5. Android 手机卫士1--实现splash页面

    1.minSdkVersion.targetSdkVersion.maxSdkVersion.target API level四个数值到底有什么区别? minSdkVersion, maxSdkVer ...

  6. Atitit.可视化与报表原理与概论

    Atitit.可视化与报表原理与概论 1.  信息可视化1 2. Gui可视化1 3. 报表系统(三大图表,金字塔,组织结构图等)1 4. <可视化数据>目录3 5. 可视化的具体实现(c ...

  7. Vue基本应用

    1.  returnDetail.$mount('#returnDetail');  不用el 直接可以绑定数据到页面的id上 作用区域不能交叠多个vue 实体 否则后面的vue 实体会失效. 2. ...

  8. mysqld: Out of memory 解决办法(mysql)

    自己配置的XWAMP环境,默认下没有详细配置mysql的my.ini,一方面不同服务器的配置不一样,另一方面按照默认为空的方式也一直没有出现过问题.不过最近服务器挂掉了,出现的症状是: 网站不能打开, ...

  9. 你必须知道的HTTP错误

    发送网络请求有时失败,分析一下响应行,在响应的响应行内,你会发现响应行由三部分组成,用空格来隔开,HTTP/1.1 404 NOT FOUND,第一个是响应的HTTP的版本,第二个和第三个是状态值. ...

  10. iOS 获取设备唯一标示符的方法

    在开发中会遇到应用需要记录设备标示,即使应用卸载后再安装也可重新识别的情况,在这写一种实现方式--读取设备的UUID(Universally Unique Identifier)并通过KeyChain ...