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 ...
随机推荐
- 一本通 1223:An Easy Problem
\[传送门qwq\] [题目描述] 给定一个正整数N,求最小的.比N大的正整数M,使得M与N的二进制表示中有相同数目的1. 举个例子,假如给定的N为78,其二进制表示为1001110,包含4个1,那么 ...
- C++笔记-数组指针/二维数组转换指针
参考资料: 1. 作者 BensonLaur :https://www.cnblogs.com/BensonLaur/p/6367077.html 2. https://blog.csdn.net/ ...
- VUE中 style scoped 修改原有样式
作用域CSS 当<style>标记具有该scoped属性时,其CSS将仅应用于当前组件的元素.这类似于Shadow DOM中的样式封装.它有一些警告,但不需要任何polyfill.通过使用 ...
- OSGI打安装包步骤(底包制作)
相关资源下载 equinox-SDK-LunaSR2 : https://pan.baidu.com/s/1xOzZZ3_VAuQJ3Zfp4W8Yyw 提取码: gjip gemini-web- ...
- python部署lvs
lvs-dr-rr import paramiko vip = '192.168.254.250' ds = '192.168.254.17' rs1 = '192.168.254.37' rs2 = ...
- 初次使用Mybatis
目录 mybatis简介 导入jar包 创建数据库以及数据库表 创建实体类 创建mapper.xml文件 配置mybatis 测试mybatis 三种查询方式 selectOne selectList ...
- CodeForces 461B Appleman and T
题目链接:http://codeforces.com/contest/461/problem/B 题目大意: 给定一课树,树上的节点有黑的也有白的,有这样一种分割树的方案,分割后每个子图只含有一个黑色 ...
- vim编辑器的命令总结
1. 设置显示行数 :set nu 2. 复制第100至第103行的代码
- Lodop简短问答客户反馈篇 及排查步骤 及注册相关
A.http下打印图片正常,https下打印图片是××.(有的客户端可以,有的不可以)重置ie浏览器试试.客户反馈:(和ie浏览器的设置有关)intenet选项--高级里,我调整为和能打印出图片的电脑 ...
- 量化交易之下单函数和context对象
一.下单函数 聚宽设计的函数(如前文所说准确叫法是API)的用法都写在API文档里,位置在聚宽网站导航栏-帮助-API文档 1.order按股数下单 order(security, amount, s ...