博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[COGS2580]偏序 II
阅读量:5840 次
发布时间:2019-06-18

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

[COGS2580]偏序 II

题目大意:

\(n(n\le50000)\)个五元组,求五维偏序。

思路:

CDQ分治套CDQ分治套CDQ分治套树状数组。

时间复杂度\(\mathcal O(n\log^4 n)\)

源代码:

#include
#include
#include
inline int getint() { register char ch; while(!isdigit(ch=getchar())); register int x=ch^'0'; while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); return x;}typedef long long int64;const int N=50001;int n;int64 ans;struct Node { int a,b,c,d,t1,t2;};Node a[N];inline bool cmp1(const Node &p1,const Node &p2) { return p1.a
>1; cdq3(b,mid); cdq3(mid+1,e); int p=b,q=mid+1; for(;q<=e;q++) { if(a[q].t1==1||a[q].t2==1) continue; for(;p<=mid&&a[p].c
=b) { if(a[p].t1==1&&a[p].t2==1) { t.modify(a[p].d,-1); } } std::inplace_merge(&a[b],&a[mid]+1,&a[e]+1,cmp3);}void cdq2(const int &b,const int &e) { if(b==e) return; const int mid=(b+e)>>1; cdq2(b,mid); cdq2(mid+1,e); for(register int i=b;i<=mid;i++) a[i].t2=1; for(register int i=mid+1;i<=e;i++) a[i].t2=2; std::inplace_merge(&a[b],&a[mid]+1,&a[e]+1,cmp2); cdq3(b,e); std::sort(&a[b],&a[e]+1,cmp2);}void cdq1(const int &b,const int &e) { if(b==e) return; const int mid=(b+e)>>1; cdq1(b,mid); cdq1(mid+1,e); for(register int i=b;i<=mid;i++) a[i].t1=1; for(register int i=mid+1;i<=e;i++) a[i].t1=2; std::inplace_merge(&a[b],&a[mid]+1,&a[e]+1,cmp1); cdq2(b,e); std::sort(&a[b],&a[e]+1,cmp1);}int main() { freopen("partial_order_two.in","r",stdin); freopen("partial_order_two.out","w",stdout); n=getint(); for(register int i=1;i<=n;i++) a[i].a=getint(); for(register int i=1;i<=n;i++) a[i].b=getint(); for(register int i=1;i<=n;i++) a[i].c=getint(); for(register int i=1;i<=n;i++) a[i].d=getint(); cdq1(1,n); printf("%lld\n",ans); return 0;}

转载于:https://www.cnblogs.com/skylee03/p/9467950.html

你可能感兴趣的文章
分享一种需求评审的方案
查看>>
虚拟运营商10月或大面积放号 哭穷背后仍有赢家
查看>>
Server2016开发环境配置
查看>>
分布式光伏发电建设中的逆变器及其选型
查看>>
增强网络安全防御 推动物联网走向应用
查看>>
UML中关联,组合与聚合等关系的辨析
查看>>
《大数据管理概论》一3.2 大数据存储与管理方法
查看>>
PowerBuilder开发简单计算器
查看>>
怎样使用linux的iptables工具进行网络共享
查看>>
《HTML5与CSS3实战指南》——导读
查看>>
RHEL6下安装oracle 10g(一)
查看>>
Kconfig的格式
查看>>
关于Cursor的moveToFirst和moveToNext的意义
查看>>
个人--工资划分5份
查看>>
有关文件下载的文件名
查看>>
史上最详细的wamp配置虚拟域名步骤
查看>>
oracle 授权
查看>>
lv扩展磁盘空间
查看>>
java8之stream流的基本操作
查看>>
二维数组计算协方差java
查看>>