打铁选手的 CDQ分治 刷题记录
BZOJ3262
- 模板题,三位偏序。
- 注意第一维排完序之后再给二三维排序的时候还是要考虑下第一维的:如果二三维都相等的话第一维小的要在前面
- 代码:
#include <bits/stdc++.h> 
 #define nmax 1000100
 #define lowbit(x) x&(-x) using namespace std;
 struct point{
 int x,y,z;
 bool operator == (const point& c) const { return (c.x==x)&&(c.y==y)&&(c.z==z); }
 };
 point in[nmax],a[nmax];
 int n,k;
 int p[nmax],c[nmax]={},v[nmax]={},an[nmax]={},fa[nmax]={}; bool cmp1(point c,point b){
 if(c.x==b.x) return (c.y==b.y)?(c.z<b.z):(c.y<b.y);
 else return c.x<b.x;
 } bool cmp2(int b,int c){
 if(a[b].y==a[c].y) return (a[b].z==a[c].z)?(a[b].x<a[c].x):(a[b].z<a[c].z);
 return a[b].y<a[c].y; //第二次排序的时候也是要考虑a的
 } inline void addv(int x,int t){
 while(x<=k){ c[x]+=t; x+=lowbit(x); }
 } inline int f(int x){
 int ans=;
 while(x>) { ans+=c[x]; x-=lowbit(x); }
 return ans;
 } void solve(int l,int r){
 if(l==r) { an[l]+=(v[l]-); return; }
 int ans=,mid=(l+r)/;
 for (int i=l; i<=r; i++) p[i]=i;
 sort(p+l,p+r+,cmp2);
 for (int i=l; i<=r; i++) {
 int id=p[i];
 if(id<=mid) addv(a[id].z,v[id]); //在左边
 else {
 an[id]+=f(a[id].z); //在右边
 // printf("now an[%d]=%d \n",id,an[id]);
 }
 }
 //清空树状数组
 for (int i=l; i<=r; i++) {
 int id=p[i];
 if(id<=mid) addv(a[id].z,(-)*v[id]);
 }
 solve(l,mid);
 solve(mid+,r);
 } int main(){
 scanf("%d%d",&n,&k);
 for (int i=; i<=n; i++) scanf("%d%d%d",&in[i].x,&in[i].y,&in[i].z);
 sort(in+,in+n+,cmp1);
 //去重
 int cnt=,i=,j=;
 while (i<=n){
 a[++cnt]=in[i];
 v[cnt]=;
 while(in[i]==in[j]) { j++; v[cnt]++; }
 i=j; j++;
 }
 //去重 over 要处理的数组是a
 solve(,cnt);
 for (int i=; i<=cnt; i++) fa[an[i]]+=v[i];
 for (int i=; i<n; i++) printf("%d\n",fa[i]);
 return ;
 }030 
打铁选手的 CDQ分治 刷题记录的更多相关文章
- PE刷题记录
		PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ... 
- leetcode刷题记录--js
		leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ... 
- Leetcode刷题记录(python3)
		Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ... 
- 刷题记录:[HarekazeCTF2019]encode_and_encode
		目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ... 
- 刷题记录:[De1CTF 2019]Giftbox && Comment
		目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ... 
- 刷题记录:[强网杯 2019]Upload
		目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ... 
- 刷题记录:[XNUCA2019Qualifier]EasyPHP
		目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ... 
- 刷题记录:[DDCTF 2019]homebrew event loop
		目录 刷题记录:[DDCTF 2019]homebrew event loop 知识点 1.逻辑漏洞 2.flask session解密 总结 刷题记录:[DDCTF 2019]homebrew ev ... 
- 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System
		目录 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System 知识点 1.padding-oracle attack 2.cbc字节翻转攻击 3.FFMpeg文件读取漏 ... 
随机推荐
- 在Django中连接MySQL数据库(Python3)
			我的环境: python3.6, Django2.1.5, MySQL8.0.15, win10, PyCharm, 要求:已经安装了MySQL数据库 ... 
- 【大白话系列】MySQL 学习总结 之 COMPACT 行格式的设计原理
			如果大家对我的 [大白话系列]MySQL 学习总结系列 感兴趣的话,可以点击关注一波. 一.回顾 MySQL 学习总结系列至此已经第七节了. 从大方向:我们已经学习了 MySQL 的架构设计.Inno ... 
- 【转】netty-transport版本冲突
			Springboot整合Elasticsearch报错 今天使用SpringBoot整合Elasticsearch时候,相关的配置完成后,启动项目就报错了. nested exception is j ... 
- MySql存储引擎:innodb   myisan  memory
			一.MySQL存在的常用存储引擎 存储引擎就是指表的类型,数据库的存储引擎决定了表在计算机中的存储方式. 使用show engines; (show engines\G;)可查看数据库支持的存储引擎 ... 
- mitmproxy--Cannot establish TLS with client (sni: e.crashlytics.com): TlsException("(-1, 'Unexpected EOF')",) 解决办法
			按崔哥(https://cuiqingcai.com/5391.html)的安装步骤一步步下来,会报这个错误: Cannot establish TLS with client (sni: e.cra ... 
- linux中压缩解压缩命令
			目录 gzip gunzip tar(打包压缩) tar(解包解压) zip unzip bzip2 bunzip2 gzip 解释 命令名称:gzip 命令英文原意:GUN zip 命令所在路径:/ ... 
- 洛谷P3719 [AHOI2017初中组]rexp
			洛谷P3719 [AHOI2017初中组]rexp 题目背景 以下为不影响题意的简化版题目. 题目描述 给出一个由(,),|,a组成的序列,求化简后有多少个a. 化简规则: 1.形如aa...a|aa ... 
- NIO学习笔记,从Linux IO演化模型到Netty—— Java NIO零拷贝
			同样只是大致上的认识. 其中,当使用transferFrom,transferTo的时候用的sendfile(). 如果系统内核不支持 sendfile,进一步执行 transferToTrusted ... 
- CSS中before、after伪类选择器的巧用
			大家好,今天给大家带来使用css中 before . after 实现两个效果,话不多说,我们先来看看, before 和 after 它们的作用是什么 选择器 作用 before 向选定的元素前插入 ... 
- centos7系统中忘记了root管理员账号密码的解决方式
			随着计算机的使用越来越普遍,现在的用户都会有多个密码,不是这软件的密码就是那个的,QQ.邮箱.游戏,还有系统的登录密码!每一个密码都不一样!所以越来越多的密码需要去记住!也因为这样,只要其中一个长时间 ... 
