COGS 2580. [HZOI 2015]偏序 II

题目传送门

  题目大意:给n个元素,每个元素有具有4个属性a,b,c,d,求i<j并且ai<aj,bi<bj,ci<cj,di<dj的i,j对数有多少?

  a,b,c,d均为1~n的排列,即不会有i,j使得ai=aj or bi=bj or ci=cj or di=dj。

题目是离线的,cdq分治可以很好的解决这一类问题。cdq套cdq套cdq再加个bit就行了。

第一层的cdq处理a,保证a有序,

第二层在第一层的基础上处理b,保证b有序,以此类推。

第三层最后处理d,将添加的加进bit,询问的查询1~d有多少个,累加进答案ans,最后反过来删掉加进去的。(相当于清空bit)

我写的是指针形的,代码会比较短……

#include<cstdio>
#include<algorithm> using namespace std; const int N=50050;
struct data { int a,b,c,d,id; bool p; } D[4][N];
int n,px,T[N],ans; bool cmp(data A,data B)
{
if(px==1) return (A.a<B.a); else
if(px==2) return (A.b<B.b); else
if(px==3) return (A.c<B.c);
} void add(int x,int v) { for(int i=x;i<=n;i+=(i&-i)) T[i]+=v; } int sum(int x) { int Ans=0; for(int i=x;i;i-=(i&-i)) Ans+=T[i]; return Ans; } void CDQ(int now,int L,int R)
{
if(L==R) return;
int Mid=(L+R)>>1; data *S=D[now+1],*F=D[now];
int s=0;
if(now==0)
{
for(int i=L;i<=Mid;i++) S[++s]=F[i],S[s].p=0;
for(int i=Mid+1;i<=R;i++) S[++s]=F[i],S[s].p=1;
} else
{
for(int i=L;i<=Mid;i++) if(!F[i].p) S[++s]=F[i];
for(int i=Mid+1;i<=R;i++) if(F[i].p) S[++s]=F[i];
}
if(s)
{
px=now+1; sort(S+1,S+1+s,cmp);
if(now==2)
{
for(int i=1;i<=s;i++)
if(!S[i].p) add(S[i].d,1); else ans+=sum(S[i].d);
for(int i=1;i<=s;i++)
if(!S[i].p) add(S[i].d,-1);
} else CDQ(now+1,1,s);
}
CDQ(now,L,Mid); CDQ(now,Mid+1,R);
} int main()
{
freopen("partial_order_two.in","r",stdin);
freopen("partial_order_two.out","w",stdout);
scanf("%d",&n); data *F=D[0];
for(int i=1;i<=n;i++) F[i].id=i;
for(int i=1;i<=n;i++) scanf("%d",&F[i].a);
for(int i=1;i<=n;i++) scanf("%d",&F[i].b);
for(int i=1;i<=n;i++) scanf("%d",&F[i].c);
for(int i=1;i<=n;i++) scanf("%d",&F[i].d);
ans=0; CDQ(0,1,n);
printf("%d\n",ans);
return 0;
}

COGS 2580. [HZOI 2015]偏序 II的更多相关文章

  1. Bitset([HZOI 2015]偏序++)

    Bitset简介 下面介绍C++ STL 中一个非常有用的东西: Bitset 类似于二进制状压,它可以把信息转化成一个01串存储起来 定义方法: 首先要#include<bitset>或 ...

  2. cogs 2123. [HZOI 2015] Glass Beads

    2123. [HZOI 2015] Glass Beads ★★★   输入文件:MinRepresentations.in   输出文件:MinRepresentations.out   简单对比时 ...

  3. cogs 2320. [HZOI 2015]聪聪的世界题解

    2320. [HZOI 2015]聪聪的世界 时间限制:6 s   内存限制:512 MB [题目描述] 背景: 聪聪的性取向有问题. 题目描述: 聪聪遇到了一个难题: 给出一个序列a1…an,完成以 ...

  4. cogs 2355. [HZOI 2015] 有标号的DAG计数 II

    题目分析 来自2013年王迪的论文<浅谈容斥原理> 设\(f_{n,S}\)表示n个节点,入度为0的点集恰好为S的方案数. 设\(g_{n,S}\)表示n个节点,入度为0的点集至少为S的方 ...

  5. COGS 2479. [HZOI 2016]偏序 [CDQ分治套CDQ分治 四维偏序]

    传送门 给定一个有n个元素的序列,元素编号为1~n,每个元素有三个属性a,b,c,求序列中满足i<j且ai<aj且bi<bj且ci<cj的数对(i,j)的个数. 对于100%的 ...

  6. COGS 2479. [HZOI 2016] 偏序 (CDQ套CDQ)

    传送门 解题思路 四维偏序问题,模仿三维偏序,第一维排序,第二维CDQ,最后剩下二元组,发现没办法处理,就继续嵌套CDQ分治.首先把二元组的左右两边分别打上不同的标记,因为统计答案时只统计左边对右边的 ...

  7. COGS 2188. [HZOI 2015] Math 题解

      题目描述: 给定n个数X1-Xn,求下面式子的值(整数部分): n<=107,xi<=109且互不相同. 分析: 其实一开始看见这道题我也吓傻了,k这么大,再说我又是数论鶸渣,打死也不 ...

  8. [COGS 2287][HZOI 2015]疯狂的机器人

    Description 题库链接 现在在二维平面内原点上有一只机器人,他每次可以选择向右走,向左走,向下走,向上走和不走(每次如果走只能走一格).机器人不能走到横坐标是负数或者纵坐标是负数的点上. 给 ...

  9. [COGS 2258][HZOI 2015]复仇的序幕曲

    Description 你还梦不梦痛不痛,回忆这么重你怎么背得动 ----序言 当年的战火硝烟已经渐渐远去,可仇恨却在阿凯蒂王子的心中越来越深 他的叔父三年前谋权篡位,逼宫杀死了他的父王,用铁血手腕平 ...

随机推荐

  1. LeetCode Weekly Contest 19

    1.504. Base 7 水题,直接写.但是我错了一次,忘了处理0的情况. 没有考虑边界条件.写完代码,一般需要自己想几个边界测试用例进行测试. class Solution { public: s ...

  2. 洛谷P2181 对角线(组合数)

    题目描述 对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点.请求楚图形中对角线交点的个数. 例如,6边形: 输入输出格式 输入格式: 第一行一个n,代表边数. 输出格式: 第一行输出交点数 ...

  3. Data内置对象

    1.内置对象 Date 日期对象 2.创建日期对象 2.1 根据当前的系统时间来创建日期对象. var date1 = new Date(); //a.输出日期对象的信息 console.log(da ...

  4. IE不支持 ES6 Promise 对象的解决方案

    * 引入bluebird.js即可完美解决. /*ie兼容 Promise*/ isIE(); function isIE() { //ie? if ( !! window.ActiveXObject ...

  5. MFC常用控件之列表视图控件(List Control)

    近期学习了鸡啄米大神的博客,对其中的一些知识点做了一些自己的总结.不过,博客内容大部分来自鸡啄米.因此,这个博客算是转载博客,只是加了一些我自己的理解而已.若想学习鸡啄米大神的博客总结,请点击连接:h ...

  6. OData + jqgrid 部署在IIS 8.0上可增加但不能删除修改问题

    解决方法: <system.webServer>里添加 <modules> <remove name="WebDAVModule" /> < ...

  7. 获取json的节点名称

    好几次想取json的节点名称,今天搞定了. procedure GetJsonNames(o: ISuperObject; Strs: TStrings); var ite: TSuperAvlIte ...

  8. java servlet 3.0文件上传

    在以前,处理文件上传是一个很痛苦的事情,大都借助于开源的上传组件,诸如commons fileupload等.现在好了,很方便,便捷到比那些组件都方便至极.以前的HTML端上传表单不用改变什么,还是一 ...

  9. VFS文件系统结构分析 与socket

    本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载.但转载请保持文档的完整性,并注明原作者及原链接.内容可任意使用,但对因使用该内容引起的后果不做任何保证. 作者:fireaxe_hq@ho ...

  10. bzoj 1296: [SCOI2009]粉刷匠 动态规划

    Description windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. 每个 ...