题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3262

其实就是三位偏序的模板,cdq分治入门题。

学习cdq分治请看__stdcall大佬的博客:传送门

排序来维护第一层,cdq维护一层,树状数组维护一层,然后就没有啦qwqwq

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define MAXN 100010
using namespace std;
int n,k,cnt;
int ans[MAXN],tree[MAXN<<1];
struct Node{int a,b,c,sum,ans;}node[MAXN],now[MAXN];
inline bool cmp1(struct Node x,struct Node y)
{if(x.a!=y.a) return x.a<y.a;if(x.b!=y.b) return x.b<y.b;return x.c<y.c;
}
inline bool cmp2(struct Node x,struct Node y)
{if(x.b!=y.b) return x.b<y.b;return x.c<y.c;
}
inline bool check(struct Node x,struct Node y)
{if((x.a==y.a)&&(x.b==y.b)&&(x.c==y.c)) return true;else return false;
}
inline void add(int x,int val)
{for(int i=x;i<=k;i+=(i&-i))tree[i]+=val;
}
inline int query(int x)
{int cur_ans=0;for(int i=x;i;i-=(i&-i))cur_ans+=tree[i];return cur_ans;
}
inline void cdq(int l,int r)
{if(l==r) return;int mid=(l+r)>>1;cdq(l,mid); cdq(mid+1,r);sort(&now[l],&now[mid+1],cmp2);sort(&now[mid+1],&now[r+1],cmp2);int i=l;for(int j=mid+1;j<=r;j++){   while(i<=mid&&now[i].b<=now[j].b)add(now[i].c,now[i].sum),i++;now[j].ans+=query(now[j].c);}for(int j=l;j<i;j++) add(now[j].c,-now[j].sum);
}
int main()
{#ifndef ONLINE_JUDGEfreopen("ce.in","r",stdin);#endifscanf("%d%d",&n,&k);for(int i=1;i<=n;i++)scanf("%d%d%d",&node[i].a,&node[i].b,&node[i].c);sort(node+1,node+1+n,cmp1);for(int i=1;i<=n;i++){if(check(node[i],node[i-1])) now[cnt].sum++;else cnt++,now[cnt]=node[i],now[cnt].sum++;}cdq(1,cnt);for(int i=1;i<=cnt;i++) ans[now[i].ans+now[i].sum-1]+=now[i].sum;for(int i=0;i<n;i++) printf("%d\n",ans[i]);return 0;
}

转载于:https://www.cnblogs.com/fengxunling/p/10127372.html

陌上花开(三维偏序)(cdq分治)相关推荐

  1. 三维偏序/cdq分治/

    三维偏序---cdq分治 cdq分治概述 二维偏序概述 二维偏序例题分析 三维偏序概述 例题分析 cdq分治概述 前置知识:(如果不懂要先去了解分治) > 分治: > 分而治之,将原问题不 ...

  2. BZOJ3262/Luogu3810 陌上花开 (三维偏序,CDQ)

    一个下午的光阴之死,凶手是细节与手残. 致命的一枪:BIT存权值时: for(; x <= maxx; x += x&-x) t[x] += w;//for(; x <= n; x ...

  3. BZOJ 2244 [SDOI2011]拦截导弹 (三维偏序CDQ+线段树)

    题目大意: 洛谷传送门 不愧为SDOI的duliu题 第一问?二元组的最长不上升子序列长度?裸的三维偏序问题,直接上$CDQ$ 由于是不上升,需要查询某一范围的最大值,并不是前缀最大值,建议用线段树实 ...

  4. [偏序关系与CDQ分治]【学习笔记】

    组合数学真是太棒了 $CDQ$真是太棒了(雾 参考资料: 1.<组合数学> 2.论文 课件 很容易查到 3.sro __stdcall 偏序关系 关系: 集合$X$上的关系是$X$与$X$ ...

  5. 洛谷 - P3810 【模板】三维偏序(陌上花开)(CDQ分治套树状数组)

    题目链接:点击查看 题目大意:给出 n 个点,每个点有三个属性 a , b , c ,对于每个点 i 来说,求出有多少个 j 满足 a[ j ] <= a[ i ] && b[ ...

  6. 分治算法,逆序对,三维偏序与CDQ分治

    分治算法基本思想 当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出. 对于这类问题,我们往往先把它分解成几个子问题,找到求出 ...

  7. CDQ分治 + 树状数组 ---- C. Goodbye Souvenir(三维偏序+思维)

    题目链接 题目大意: 给定长度为nnn的数组, 定义数字XXX在[l,r][l,r][l,r]内的值为数字XXX在[l,r][l,r][l,r]内最后一次出现位置的下标减去第一次出现位置的下标 给定m ...

  8. 【BZOJ-3262】陌上花开 CDQ分治(3维偏序)

    3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MB Submit: 1439  Solved: 648 [Submit][Status][Discu ...

  9. HDU - 5517 Triple(三维偏序-二维树状数组/CDQ分治)

    题目链接:点击查看 题目大意:给出 n 个二元对 ( a , b ) 和 m 个三元对 ( c , d , e ),对于所有 b == e 的二元对和三元对,可以通过某种运算形成一个新的三元对 ( a ...

  10. 【原创】从BZOJ2683 简单题中 整 CDQ分治解决三维偏序

    CDQ分治 题目描述 你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作: 命令 参数限制 内容 1 x y A 1<=x,y<=N,A是正整数 将格子 ...

最新文章

  1. influxdb java_身为Java程序员想拿高薪?这份分布式的pdf你一定不能错过
  2. 【原】网页程序学习Linux利器-----jsuix
  3. 光端机与光纤收发器的应用
  4. sql数据导入错误代码: 0x80004005_PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR...
  5. 如何在MySQL中创建新用户并授予权限
  6. linux下apache+openssl配置记录
  7. Word英文句子之间空两格的方法,有截图
  8. GDI+ 中发生一般性错误(在 OutputStream 中保存 PNG 格式图像时遇到的问题)
  9. element的表格index自定义_DIV表格组
  10. DeFIL.org的资金池规模达168万枚FIL 已借出105万枚FIL
  11. OpenResty HelloWorld
  12. ChannelHandler 接口继承关系图
  13. Introduction to Computer Networking学习笔记(二十):delay guarantees延迟速度保证
  14. Java使用while循环计算调和数列的和并打印
  15. Acunetix 网站漏洞扫描软件 检测您网站的安全性。
  16. 自然语言处理NLP简介
  17. 数组结构与算法-036-042 前中后缀表达式-逆波兰计算器
  18. java html读取数据库数据类型,从Word(Docx)读取方程式和公式到html并使用java保存数据库(示例代码)...
  19. 音频信号转为开关控制信号_盘点模拟量信号和开关量信号区别与应用
  20. EBS开发_创建AP付款

热门文章

  1. override java field_JAVA方法的重载(overload)和覆盖(override)
  2. android 属性翻牌动画,如何在Android中利用TextSwitcher实现一个文字上下翻牌效果
  3. vue2.0项目部署到服务器_阿里云服务器搭建及项目部署过程---小白篇
  4. java多线程-线程生命周期及状态
  5. 微信小程序底部突起半圆设计
  6. 使用nsenter进入Docker容器
  7. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战...
  8. 阶段3 2.Spring_02.程序间耦合_6 工厂模式解耦
  9. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_13使用骨架创建maven的web工程...
  10. Gym - 100623J Just Too Lucky (数位dp)