博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Luogu P4390 [BOI2007]Mokia 摩基亚 | CDQ分治
阅读量:5334 次
发布时间:2019-06-15

本文共 1342 字,大约阅读时间需要 4 分钟。

$CDQ$分治。

考虑此时在区间$[l,r]$中,要计算$[l,mid]$中的操作对$[mid+1,r]$中的询问的影响。

计算时,排序加上树状数组即可。

然后再递归处理$[l,mid]$和$[mid+1,r]$。

#include
#include
#include
using namespace std; const int MAX=2000005;struct data{ int opt,x,y,y1,w,num; data(int a=0,int b=0,int c=0,int d=0,int e=0,int f=0) {opt=a,x=b,y=c,y1=d,w=e,num=f;}}s[200005],g[200005];bool cmp(data u,data v) {
return (u.x==v.x)?(u.opt
>1; CDQ(l,mid),CDQ(mid+1,r); Sol(l,mid,r);}int main(){ int n=0,cnt=0,tot=0; scanf("%d%d",&n,&n); for(;;) { int opt=0; scanf("%d",&opt); if(opt==3) break; if(opt==1) { s[++cnt].opt=1; scanf("%d%d%d",&s[cnt].x,&s[cnt].y,&s[cnt].w); s[cnt].x++,s[cnt].y++; } if(opt==2) { tot++; s[++cnt].opt=2,s[cnt].num=tot; scanf("%d%d",&s[cnt].x,&s[cnt].y),s[cnt].y++; s[++cnt].opt=3,s[cnt].num=tot; scanf("%d%d",&s[cnt].x,&s[cnt].y1),s[cnt].x++,s[cnt].y1++; s[cnt].y=s[cnt-1].y; s[cnt-1].y1=s[cnt].y1; } } CDQ(1,cnt); for(int i=1;i<=tot;i++) printf("%d\n",ans[i]); return 0;}
Luogu P4390

 

转载于:https://www.cnblogs.com/wozaixuexi/p/11246767.html

你可能感兴趣的文章
邓白氏编码 申请
查看>>
关于nodejs的npm命令无反应的解决方案
查看>>
Linux远程登录
查看>>
ES6 异步编程解决方案 之 Promise 对象
查看>>
Alpha阶段第九次Scrum Meeting
查看>>
Linux自己安装redis扩展
查看>>
HDU 1016 Prime Ring Problem(dfs)
查看>>
苹果官方例子
查看>>
C#中结构体与字节流互相转换
查看>>
【矩阵快速幂】bzoj1297 [SCOI2009]迷路
查看>>
双线性插值
查看>>
TCP连接
查看>>
HTML-meta
查看>>
使用ubifs作为根文件系统的openwrt如何在进行sysupgrade时保存旧的配置
查看>>
Android 异步加载解决方案
查看>>
app 后端技术
查看>>
协程的原理及其在高并发服务中的应用
查看>>
Android的一个自定义的动态添加Dialog类
查看>>
js中对时间的操作
查看>>
WIN10配置MongoDB
查看>>