博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ.3262.陌上花开([模板]CDQ分治 三维偏序)
阅读量:5095 次
发布时间:2019-06-13

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

/*5904kb  872ms对于相邻x,y,z相同的元素要进行去重,并记录次数算入贡献(它们之间产生的答案是一样的,但不去重会。。) */#include 
#include
#include
#define gc() getchar()#define lb(x) (x)&-(x)const int N=1e5+5;int n,Ans[N];int read();struct Operation{ int x,y,z,cnt,res; inline void Init(){ x=read(),y=read(),z=read(),cnt=1; } bool operator <(const Operation &a)const{ return x==a.x?(y==a.y?z
>1; CDQ(l,m), CDQ(m+1,r); int p1=l,p2=m+1,cnt=0; while(p1<=m&&p2<=r) { if(q[p1].y<=q[p2].y)//这里的条件要是<= BIT::Add(q[p1].z,q[p1].cnt), tmp[cnt++]=q[p1++]; else q[p2].res+=BIT::Query(q[p2].z), tmp[cnt++]=q[p2++]; } while(p1<=m) BIT::Add(q[p1].z,q[p1].cnt), tmp[cnt++]=q[p1++];//先加上 方便再减去 while(p2<=r) q[p2].res+=BIT::Query(q[p2].z), tmp[cnt++]=q[p2++]; for(int i=l; i<=m; ++i) BIT::Add(q[i].z,-q[i].cnt); for(int i=0; i

3.30:

/*5904kb  840ms是对x,y,z都相同的元素去重,不是对z。。sb了。去重后的贡献是q[p].cnt!*/#include 
#include
#include
#define gc() getchar()#define lb(x) (x)&-(x)const int N=1e5+5,MAXN=2e5+5;int n,Ans[N];int read();struct Node{ int x,y,z,cnt,ans; void Init(){ x=read(),y=read(),z=read(),cnt=1; } bool operator <(const Node &a)const{ return x==a.x?(y==a.y?z
>1; CDQ(l,m), CDQ(m+1,r); int p1=l,p2=m+1,t=0; while(p1<=m&&p2<=r) { if(q[p1].y<=q[p2].y) BIT::Add(q[p1].z,q[p1].cnt), tmp[t++]=q[p1++];//只是排y,别去管什么z。。 else q[p2].ans+=BIT::Query(q[p2].z), tmp[t++]=q[p2++]; } if(p1<=m){ for(int i=l; i

19.4.5

上BZOJ前三啦。

//6196KB    688MS#include 
#include
#include
#define gc() getchar()#define MAXIN 300000//#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)typedef long long LL;const int N=1e5+5,M=2e5+5;int Ans[N];char IN[MAXIN],*SS=IN,*TT=IN;struct Node{ int x,y,z,cnt,ans; bool operator <(const Node &a)const { return x==a.x?(y==a.y?z
>1; CDQ(l,m), CDQ(m+1,r); int p1=l,p2=m+1,p=l; while(p1<=m&&p2<=r) { if(q[p1].y<=q[p2].y) T.Add(q[p1].z,q[p1].cnt), tmp[p++]=q[p1++];//q[p1].cnt! else q[p2].ans+=T.Query(q[p2].z), tmp[p++]=q[p2++]; } while(p2<=r) q[p2].ans+=T.Query(q[p2].z), tmp[p++]=q[p2++]; for(int i=l; i

转载于:https://www.cnblogs.com/SovietPower/p/8574905.html

你可能感兴趣的文章
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IOS-图片操作集合
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
jquery实现限制textarea输入字数
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
ActiveMQ与spring整合
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
排球积分程序(三)——模型类的设计
查看>>
HDU 4635 Strongly connected
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>