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 ...
随机推荐
- MongoDB 创建基础索引、组合索引、唯一索引以及优化
一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样.其实可以这样说说,索引 ...
- 将arguments转换成数组的方法
将函数里的arguments,转换成一个真正的数组的方法,arguments是个类数组,除了有实参所组成的类似数组以外,还有自己的属性,如callee,arguments.callee就是当前正在执行 ...
- .NET Core 开源工具 IPTools - 快速查询 IP 地理位置、经纬度信息
快速查询IP信息,支持国内和国外IP信息查询,支持查询经纬度,地理位置最高支持到城市. 1. IPTools.China 快速查询中国IP地址信息,包含国家.省份.城市.和网络运营商.非中国IP只支持 ...
- 本文详解5G是个什么鬼,程序员都准备好了吗?
无线移动通讯发展历史 最近5G的概念炒的如火如荼,为此,华为和高通还干了一仗.这篇文章从技术层面给大家分析,什么是5G,它和4G比,高级在哪里? 我们来看看移动互联网的技术发展: 然后我们在来看看他们 ...
- 编写python程序和运行.py文件的方法步骤
前提:已安装好 Subliume Test 3 且已经添加好python编译系统,已安装好python3.7 一.新建一个文本文档,将后缀名改为.py 二.使用 Subliume Test 3 打开该 ...
- Linux(CentOS) 查看当前占用CPU或内存最多的K个进程
一.可以使用以下命令查使用内存最多的K个进程 方法1: ps -aux | sort -k4nr | head -K 如果是10个进程,K=10,如果是最高的三个,K=3 说明:ps -aux中(a指 ...
- 七牛Qshell 常用命令打印
下载 该工具使用Go语言编写而成,当然为了方便不熟悉Go或者急于使用工具来解决问题的开发者,我们提供了预先编译好的各主流操作系统平台的二进制文件供大家下载使用,由于平台的多样性,我们把这些二进制打包放 ...
- Ubuntu和Windows双系统的安装
本菜鸡的ACM生涯大概是结束了 最有希望的EC和焦作也顺利的铁了,一路走来还是怪自己不努力,整日整日的划水,算了,铁牌退役,也是自己应有的惩罚,静下心来吧 下面介绍如何装windows10和Ubunt ...
- [BJOI2019] 光线
看起来很麻烦,做起来并不难的题 以下设:$a_i=\frac{a_i}{100},b_i=\frac{b_i}{100}$ 显然,如果$b_i=0$的话,直接求$\Pi a_i$就是答案. 解决反射问 ...
- 插入mysql失败,因为java数据类型是个实体类,加上.id就好了
错误信息: ### Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xAC\xED\x ...