求三维偏序的模板 :

 //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分治求不知道多少维偏序 (持续更新 ]的更多相关文章

  1. CDQ分治嵌套模板:多维偏序问题

    CDQ分治2 CDQ套CDQ:四维偏序问题 题目来源:COGS 2479 偏序 #define LEFT 0 #define RIGHT 1 struct Node{int a,b,c,d,bg;}; ...

  2. Educational Codeforces Round 41 967 E. Tufurama (CDQ分治 求 二维点数)

    Educational Codeforces Round 41 (Rated for Div. 2) E. Tufurama (CDQ分治 求 二维点数) time limit per test 2 ...

  3. CDQ分治学习笔记(三维偏序题解)

    首先肯定是要膜拜CDQ大佬的. 题目背景 这是一道模板题 可以使用bitset,CDQ分治,K-DTree等方式解决. 题目描述 有 nn 个元素,第 ii 个元素有 a_iai​.b_ibi​.c_ ...

  4. hdu5618(cdq分治求三维偏序)

    题意:给n(n<=100000)个点,坐标为(xi,yi,zi)(1<=xi,yi,zi<=100000),定义一个点A比一个点B小,当且仅当xA<=xB,yA<=yB, ...

  5. BOI2007 Mokia | cdq分治求二维点数模板

    题目链接:戳我 也没什么,其实主要就是为了存一个求二维坐标上矩形内点的个数的模板.为了之后咕咕咕地复习使用 不过需要注意的一点是,树状数组传x的时候可千万不要传0了!要不然会一直死循环的...qwqw ...

  6. 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 ...

  7. CDQ分治求前缀和

    #include<bits/stdc++.h> using namespace std; ; int n,a_tot,q_tot,ans[N]; ]; struct query { int ...

  8. oracle运维(持续更新)

    目录 简单命令使用 进入SQL*Plus 退出SQL*Plus 在sqlplus下得到帮助信息 显示表结构命令 DESCRIBE SQL*Plus 中的编辑命令 调用外部系统编辑器 运行命令文件 关于 ...

  9. MySQL日常运维操作---持续更新

    1.查看当前连接数: 这些参数都是什么意思呢? Threads_cached ##mysql管理的线程池中还有多少可以被复用的资源 Threads_connected ##打开的连接数 Threads ...

随机推荐

  1. python3 time模块

    import time '''查看系统时间拿到的是一个数字(时间戳)从1970-01-01 00:00:00开始计算,以秒为单位'''print(time.time()) 执行结果:155650817 ...

  2. TensorRT&Sample&Python[uff_custom_plugin]

    本文是基于TensorRT 5.0.2基础上,关于其内部的uff_custom_plugin例子的分析和介绍. 本例子展示如何使用cpp基于tensorrt python绑定和UFF解析器进行编写pl ...

  3. 使用maven时出现Failure to transfer 错误的解决方法

    在eclipse里使用maven,连接nexus私服. 添加依赖之后,总是报添加的依赖jar文件找不到,但是在nexus的库里面能找到这个依赖的jar文件,但是在本地的maven库里面找不到,于是我将 ...

  4. iOS开发基础-九宫格坐标(6)

    继续对iOS开发基础-九宫格坐标(5)中的代码进行优化. 优化思路:把字典转模型部分的数据处理操作也拿到模型类中去实现,即将 ViewController 类实现中 apps 方法搬到 WJQAppI ...

  5. 使用React全家桶搭建一个后台管理系统

    引子 学生时代为了掌握某个知识点会不断地做习题,做总结,步入岗位之后何尝不是一样呢?做业务就如同做习题,如果‘课后’适当地进行总结,必然更快地提升自己的水平. 由于公司采用的react+node的技术 ...

  6. 一个方法教你认识ref(简单易懂)

    参数分为值类型和引用类型,当我们将一个值类型的参数进行传递到另一个方法的时候相当于,将这个变量进行复制到该方法进行操作,但是不会对该变量原始的值有影响. 但是有时候我们需要他有“影响”于是ref就出现 ...

  7. 循环语句之for循环

    什么是循环语句? 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否 ...

  8. Python Revisited (变量)

    目录 = 浅拷贝 深拷贝` 函数的默认参数为可变类型时 危险 全局变量与临时变量 global 在函数里面进行复制 再看一个例子 numpy里的bug? 待续 @ 首先,需要指出的是,Python的变 ...

  9. app.use和app.get,app.post区别

    express中,express的实例app: app.use(path,callback)中的callback既可以是router对象又可以是函数 app.get(path,callback)中的c ...

  10. 记一次innobackupex备份恢复数据库过程

    简介:以前备份都是通过mysqldump备份数据库的,由于是逻辑备份,所以采用这种备份方式数据是很安全的,跨平台.版本都很容易.凡事有利必有弊,逻辑备份在你数据库比较大时,备份.恢复数据所耗费的时间也 ...