CDQ分治求不知道多少维偏序 (持续更新 ]
求三维偏序的模板 :
- //Author : 15owzLy1
- //luogu3810.cpp
- //2018 12 25 16:31:58
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- static char buf[],*p1=buf,*p2=buf;
- inline char get_char() {
- return p1==p2&&(p2=(p1=buf)+fread(buf,,,stdin),p1==p2)?EOF:*p1++;
- }
- inline int in() {
- int x=;char c=get_char();
- while(c<''||c>'')c=get_char();
- while(c>=''&&c<='')x=(x<<)+(x<<)+(c^), c=get_char();
- return x;
- }
- template<typename T>
- inline void out(T &x) {
- int cnt=;
- static char s[];
- do s[cnt++]=x%+; while(x/=);
- while(cnt--) putchar(s[cnt]);
- putchar('\n');
- }
- const int N = (int)1e5+;
- struct Triple {
- int x, y, z, val, ans;
- }a[N], tmp[N];
- int n, k, ans[N];
- inline bool cmp(const Triple &x, const Triple &y) {
- if(x.x==y.x) return x.z==y.z?x.y<y.y:x.z<y.z;
- return x.x<y.x;
- }
- struct BinaryIndexedTree {
- int t[N<<];
- inline void insert(int p, int del) {for(;p<=k;p+=p&-p)t[p]+=del;}
- inline int ask(int p) {int ret=;for(;p;p-=p&-p)ret+=t[p];return ret;}
- }bit;
- void cdq(int l, int r) {
- if(l==r) return ;
- int mid=(l+r)>>;
- cdq(l, mid); cdq(mid+, r);
- int i=l, j=mid+, k=l;
- while(i<=mid&&j<=r)
- if(a[i].z<=a[j].z)
- bit.insert(a[i].y, a[i].val), tmp[k++]=a[i++];
- else
- a[j].ans+=bit.ask(a[j].y), tmp[k++]=a[j++];
- for(int p=j;p<=r;p++) a[p].ans+=bit.ask(a[p].y);
- for(int p=l;p<i;p++) bit.insert(a[p].y, -a[p].val);
- if(i<=mid) std::copy(a+i, a+mid+, tmp+k);
- if(j<=r) std::copy(a+j, a+r+, tmp+k);
- std::copy(tmp+l, tmp+r+, a+l);
- }
- int main() {
- int nn=in();
- k=in();
- for(int i=;i<=nn;i++)
- tmp[i]=(Triple){in(), in(), in(), , };
- std::sort(tmp+, tmp++nn, cmp);
- for(int i=, cnt=;i<=nn;i++, cnt++)
- if(tmp[i].x!=tmp[i+].x||tmp[i].y!=tmp[i+].y||tmp[i].z!=tmp[i+].z)
- a[++n]=tmp[i], a[n].val=cnt, cnt=;
- cdq(, n);
- for(int i=;i<=n;i++) ans[a[i].ans+a[i].val-]+=a[i].val;
- for(int i=;i<nn;i++) out(ans[i]);
- return ;
- }
CDQ分治求不知道多少维偏序 (持续更新 ]的更多相关文章
- CDQ分治嵌套模板:多维偏序问题
CDQ分治2 CDQ套CDQ:四维偏序问题 题目来源:COGS 2479 偏序 #define LEFT 0 #define RIGHT 1 struct Node{int a,b,c,d,bg;}; ...
- Educational Codeforces Round 41 967 E. Tufurama (CDQ分治 求 二维点数)
Educational Codeforces Round 41 (Rated for Div. 2) E. Tufurama (CDQ分治 求 二维点数) time limit per test 2 ...
- CDQ分治学习笔记(三维偏序题解)
首先肯定是要膜拜CDQ大佬的. 题目背景 这是一道模板题 可以使用bitset,CDQ分治,K-DTree等方式解决. 题目描述 有 nn 个元素,第 ii 个元素有 a_iai.b_ibi.c_ ...
- hdu5618(cdq分治求三维偏序)
题意:给n(n<=100000)个点,坐标为(xi,yi,zi)(1<=xi,yi,zi<=100000),定义一个点A比一个点B小,当且仅当xA<=xB,yA<=yB, ...
- BOI2007 Mokia | cdq分治求二维点数模板
题目链接:戳我 也没什么,其实主要就是为了存一个求二维坐标上矩形内点的个数的模板.为了之后咕咕咕地复习使用 不过需要注意的一点是,树状数组传x的时候可千万不要传0了!要不然会一直死循环的...qwqw ...
- SPOJ:Another Longest Increasing Subsequence Problem(CDQ分治求三维偏序)
Given a sequence of N pairs of integers, find the length of the longest increasing subsequence of it ...
- CDQ分治求前缀和
#include<bits/stdc++.h> using namespace std; ; int n,a_tot,q_tot,ans[N]; ]; struct query { int ...
- oracle运维(持续更新)
目录 简单命令使用 进入SQL*Plus 退出SQL*Plus 在sqlplus下得到帮助信息 显示表结构命令 DESCRIBE SQL*Plus 中的编辑命令 调用外部系统编辑器 运行命令文件 关于 ...
- MySQL日常运维操作---持续更新
1.查看当前连接数: 这些参数都是什么意思呢? Threads_cached ##mysql管理的线程池中还有多少可以被复用的资源 Threads_connected ##打开的连接数 Threads ...
随机推荐
- NetSec2019 20165327 Exp7 网络欺诈防范
NetSec2019 Exp7 网络欺诈防范 一.本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 (1)简单应用SET工具建立冒名网站 (1分) (2)ette ...
- 搭建vue.js环境
一.安装Node.js (以下安装环境均为win10) 下载链接:https://nodejs.org/en/download/ 官网给出了两个版本,LTS和Curren.字面意思是推荐大多数用户使用 ...
- Linux内存管理 (22)内存检测技术(slub_debug/kmemleak/kasan)
专题:Linux内存管理专题 关键词:slub_debug.kmemleak.kasan.oob.Redzone.Padding. Linux常见的内存访问错误有: 越界访问(out of bound ...
- 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(为域名申请SSl证书)
3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(购买域名,域名绑定IP) 然后就是等着..... 假设可以了 咱呢是配置MQTT实现SSL安全加密通信,所以 ...
- 初次使用Mybatis
目录 mybatis简介 导入jar包 创建数据库以及数据库表 创建实体类 创建mapper.xml文件 配置mybatis 测试mybatis 三种查询方式 selectOne selectList ...
- Java 如何存取MySQL datetime类型
1 在java中只有Date类型,这样数据存储到MySQL会出现问题,前台提交的数据,比如2018-03-20 17:30:59,后台用Date接受的时候,由于Date只精确到天,所以默认接收时间为2 ...
- Quickstart: Embed a Power BI Report Server report using an iFrame in SharePoint Server
In this quickstart you will learn how to embed a Power BI Report Server report by using an iFrame in ...
- [CTSC2008]网络管理 [整体二分]
题面 bzoj luogu 所有事件按时间排序 按值划分下放 把每一个修改 改成一个删除一个插入 对于一个查询 直接查这个段区间有多少合法点 如果查询值大于等于目标值 进入左区间 如果一个查询无解 那 ...
- 指数型生成函数 及 多项式求ln
指数型生成函数 我们知道普通型生成函数解决的是组合问题,而指数型生成函数解决的是排列问题 对于数列\(\{a_n\}\),我们定义其指数型生成函数为 \[G(x) = a_0 + a_1x + a_2 ...
- Java【第八篇】面向对象之高级类特性
static 关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有 ...