【COGS2479】 HZOI2016—偏序
http://cogs.pro/cogs/problem/problem.php?pid=2479 (题目链接)
题意
四维偏序。
Solution
CDQ套CDQ。
细节
第二次分治不能直接按照mid分离两类数了。
代码
// cogs2479
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf 2147483600
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout)
using namespace std; const int maxn=50010;
int n,ans,f[maxn],c[maxn];
struct data {int x,y,z,id,op;}q[maxn],nq[maxn],p[maxn],np[maxn]; bool cmp(data a,data b) {return a.id<b.id;}
bool CMP(data a,data b) {return a.y<b.y;}
int lowbit(int x) {
return x&-x;
}
void modify(int x,int val) {
for (int i=x;i<=n;i+=lowbit(i)) c[i]+=val;
}
int query(int x) {
int res=0;
for (int i=x;i;i-=lowbit(i)) res+=c[i];
return res;
}
void solve2(int l,int r) {
if (l==r) return;
int mid=(l+r)>>1;
sort(p+l,p+r+1,CMP);
solve2(l,mid);solve2(mid+1,r);
for (int i=l,j=mid+1,k=l;i<=mid || j<=r;) {
if (j>r || (i<=mid && p[i].id<p[j].id)) {
if (p[i].op==0) modify(p[i].z,1);
np[k++]=p[i++];
}
else {
if (p[j].op==1) f[p[j].id]+=query(p[j].z-1);
np[k++]=p[j++];
}
}
for (int i=l;i<=mid;i++) if (p[i].op==0) modify(p[i].z,-1);
for (int i=l;i<=r;i++) p[i]=np[i];
}
void solve(int l,int r) {
if (l==r) {ans+=f[q[l].id];return;}
int mid=(l+r)>>1,l1=l,l2=mid+1;
for (int i=l;i<=r;i++) q[i].x<=mid ? nq[l1++]=q[i] : nq[l2++]=q[i];
for (int i=l;i<=r;i++) q[i]=nq[i];
solve(l,mid);
for (int i=l;i<=r;i++) p[i]=q[i],p[i].op=i>mid;
sort(p+l,p+r+1,cmp);
solve2(l,r);
solve(mid+1,r);
}
int main() {
free("partial_order");
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%d",&q[i].x);
for (int i=1;i<=n;i++) scanf("%d",&q[i].y);
for (int i=1;i<=n;i++) scanf("%d",&q[i].z);
for (int i=1;i<=n;i++) q[i].id=i;
solve(1,n);
printf("%d",ans);
fclose(stdin);fclose(stdout);
return 0;
}
【COGS2479】 HZOI2016—偏序的更多相关文章
- [HZOI2016]偏序&[HZOI2015]偏序II K维偏序问题
description Cogs: [HZOI2016]偏序 [HZOI2015]偏序 II data range \[ n\le 5\times 10^4\] solution 嵌套\(CDQ\)的 ...
- [COGS2479]偏序
[COGS2479]偏序 题目大意: \(n(n\le50000)\)个四元组,求四维偏序. 思路: CDQ分治套CDQ分治套树状数组. 细节: 第二层CDQ之前要备份数组\(a\),否则第二层CDQ ...
- [COGS2479 && COGS2639]高维偏序(CDQ分治,bitset)
COGS2479:四维偏序. CDQ套CDQ CDQ:对a分治,对b排序,再对a打标记,然后执行CDQ2 CDQ2:对b分治,对c归并排序,对d树状数组. #include<cstdio> ...
- cogs2479 偏序(CDQ套CDQ)
题目链接 思路 四维偏序 \(CDQ\)套\(CDQ\),第一维默认有序.第二维用第一个\(CDQ\)变成有序的.并且对每个点标记上第一维属于左边还是右边.第二个\(CDQ\)处理第三维,注意两个\( ...
- COGS2479(四维偏序)
题意:给定一个有n个元素的序列,元素编号为1~n,每个元素有三个属性a,b,c,求序列中满足i<j且ai<aj且bi<bj且ci<cj的数对(i,j)的个数. 分析:cdq分治 ...
- cogs2479 偏序 cdq+树套树
cdq+树状数组套替罪羊树. cdq归并a,树套树解决b,c. 记住平衡树树根不能暴力清零!!! // It is made by XZZ #include<cstdio> #includ ...
- 几道很Interesting的偏序问题
若干道偏序问题(STL,分块) 找了4道题目 BZOJ陌上花开(权限题,提供洛谷链接) Cogs2479偏序 Cogs2580偏序II Cogs2639偏序++ 作为一个正常人,肯定先看三维偏序 做法 ...
- 【教程】CDQ套CDQ——四维偏序问题
前言 上一篇文章已经介绍了简单的CDQ分治,包括经典的二维偏序和三维偏序问题,还有带修改和查询的二维/三维偏序问题.本文讲介绍多重CDQ分治的嵌套,即多维偏序问题. 四维偏序问题 给定N( ...
- c++模板函数实例化的偏序机制
一:废话 今天在stackoverflow上看到一个关于c++模板specialization的问题: http://stackoverflow.com/questions/18283851/temp ...
随机推荐
- SQL Server 启动时发生错误1069:由于登录失败而无法启动
解决方法: (1). 我的电脑--控制面板--管理工具--服务--右键MSSQLSERVER--属性--登陆--登陆身份--选择"本地系统帐户". (2). 我的电脑- ...
- [arm学习]makefile学习总结
makefile不仅仅是一个命令的集合体,其中有一些规则是需要理解掌握的. 首先,了解makefile的规则: //-----------格式---------- 目标 : 依赖1,依赖2 (TAP键 ...
- ILSVRC2016目标检测任务回顾——视频目标检测(VID)
转自知乎<深度学习大讲堂> 雷锋网(公众号:雷锋网)按:本文作者王斌,中科院计算所前瞻研究实验室跨媒体计算组博士生,导师张勇东研究员.2016年在唐胜副研究员的带领下,作为计算所MCG-I ...
- 封装之property,多态,鸭子类型,classmethod与staticmethod
一.封装之Property prooerty是一种特殊的属性,访问时他会执行一段功能(函数)然后返回 '''BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成一个属 ...
- mybatis源码-解析配置文件(一)之XML的DOM解析方式
目录 简介 Java 中 XML 文件解析 解析方式 DOM 解析 XML 新建 XML 文件 DOM 操作相关类 Java 读取 XML 文件 一起学 mybatis @ 简介 在之前的文章< ...
- ASP.NET Core分布式项目实战-目录
前言 今年是2018年,发现已经有4年没有写博客了,在这4年的时光里,接触了很多的.NET技术,自己的技术也得到很大的进步.在这段时光里面很感谢张队长以及其他开发者一直对.NET Core开源社区做出 ...
- C语言与数据库操作入门(Win版)
C语言与数据库操作入门(Win版) 2017年12月10日 17:30:17 阅读数:1387 数据库,DataBase,学C语言的是不是想说,很想爱她却并不容易呢?不用着急,C语言也可以操作数据库的 ...
- 如何有效的报告bug?
对于比较棘手的bug,反馈务须清晰.详细.精确,我们给出以下6个建议: 1.现场演示:重复bug出现的操作步骤.这个适用于公司内部人员. 2.详细描述:在什么系统使用哪个版本的YoMail,做了什 ...
- FastDFS教程Ⅰ-文件服务器安装与Nginx配置
1.简介 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载 ...
- yocto-sumo源码解析(四):bitbake
1. 环境准备 按照前面几节的分享,我们已经知道了oe-init-build-env是如何建立yocto项目环境的,下面我们继续研究bitbake脚本,在这之前,因为我们选择qemuarm64为目标机 ...