博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【三维偏序】【分块】bzoj3262 陌上花开
阅读量:6509 次
发布时间:2019-06-24

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

裸的三维偏序。 对x坐标排序,y、z坐标分块。复杂度O(n*sqrt(n*log(n)))。代码很短。

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 struct Point{
int x,y,z,num;void Read(){scanf("%d%d%d",&x,&y,&z);}}p[100002]; 7 bool operator < (const Point &a,const Point &b){
return a.x
b[400];10 vector
a[400];11 int n,rank[100001],m,head,maxv[400],sum;12 void makeblock()13 {14 int sz=(int)sqrt((double)n*(log((double)n)/log(2.0))); if(!sz) sz=1;15 for(sum=1;sum*sz
::iterator it=a[i].begin();it!=a[i].end();++it)35 if((*it).z<=U.z&&(*it).y<=U.y) ++cnt;36 return cnt;37 }38 int main()39 {40 scanf("%d%d",&n,&m);41 for(int i=1;i<=n;i++) p[i].Read();42 sort(p+1,p+n+1,cmp); makeblock();43 sort(p+1,p+n+1);44 for(int i=1;i<=n;i++)45 {46 if(p[i].x!=p[i-1].x) head=i;47 if(p[i].x!=p[i+1].x)48 {49 for(int j=head;j<=i;j++) insert(p[j]);50 for(int j=head;j<=i;j++) ++rank[query(p[j])-1];51 }52 }53 for(int i=0;i

转载于:https://www.cnblogs.com/autsky-jadek/p/4117500.html

你可能感兴趣的文章
POJ3259 SPFA判定负环
查看>>
结对项目电梯吐血总结
查看>>
离线安装Android开发环境的方法
查看>>
VC常用代码之创建进程
查看>>
对比语法错误、语义错误以及运行时错误
查看>>
Linux性能测试 uptime命令
查看>>
argparse–Parser for command-line options
查看>>
iphone three20详解 ppt
查看>>
winform 牛人
查看>>
正则表达式
查看>>
模块化Javascript代码的两种方式
查看>>
Money去哪了- 每日站立会议
查看>>
Python数据结构和算法学习笔记1
查看>>
正则之从dom字符串中提取url
查看>>
BigPipe
查看>>
大数据——基础概念
查看>>
第六次上机实验
查看>>
机器学习温和指南
查看>>
Django之ModelForm(二)-----ModelForm组件
查看>>
解决Geoserver请求跨域的几种思路,第二种思路用过
查看>>