BZOJ 3262 陌上花开
3262: 陌上花开
Time Limit: 20 Sec Memory Limit: 256 MB
Submit: 2590 Solved: 1159
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
3 3 3
2 3 3
2 3 1
3 1 1
3 1 2
1 3 1
1 1 2
1 2 2
1 3 2
1 2 1
Sample Output
1
3
0
1
0
1
0
0
1
HINT
1 <= N <= 100,000, 1 <= K <= 200,000
Source
树套树 CDQ分治
很裸的CDQ分治
对于第一维排序,第二维cdq,第三维树状数组搞掉
#include <bits/stdc++.h>
#define ll long long
using namespace std;
inline int read(){int x=0;int f=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}return x*f;
}
const int MAXN=2e6+10;
struct node{int sum,ine,a,b,c;
}e[MAXN],q[MAXN];
int cc[MAXN<<1]={},ans[MAXN];
inline int lowbit(int x){return x&-x;
}
inline void insert(int x,int vv){while(x<4000000){cc[x]+=vv;x+=lowbit(x);}
}
inline int search(int xx){int ans=0;while(xx){ans+=cc[xx];xx-=lowbit(xx);}return ans;
}
inline bool mycmp(node x,node y){if(x.a==y.a){if(x.b==y.b){return x.c<y.c;}return x.b<y.b;}return x.a<y.a;
}
inline bool mycmpp(node x,node y){return (x.b==y.b)?x.c<y.c:x.b<y.b;
}
inline void cdq(int l,int r){if(l==r) return;int mid=(l+r)>>1;cdq(l,mid);cdq(mid+1,r);sort(e+l,e+mid+1,mycmpp);sort(e+mid+1,e+r+1,mycmpp);int l1=l;int l2=mid+1;while(l2<=r){while(l1<=mid&&e[l1].b<=e[l2].b){insert(e[l1].c,e[l1].sum);l1++;}e[l2].ine+=search(e[l2].c);l2++;}for(int i=l;i<=l1-1;i++){insert(e[i].c,-e[i].sum);}
}
int main(){//freopen("All.in","r",stdin);//freopen("zhang.out","w",stdout);int n=read();int m=read();int k=0;int cnt=0;for(int i=1;i<=n;i++){q[i].a=read();q[i].b=read();q[i].c=read();}sort(q+1,q+n+1,mycmp);for(int i=1;i<=n;i++){cnt++;if(q[i].a!=q[i+1].a||q[i].b!=q[i+1].b||q[i].c!=q[i+1].c){e[++k]=q[i];e[k].sum=cnt;cnt=0;}}cdq(1,k);for(int i=1;i<=k;i++){ans[e[i].sum+e[i].ine-1]+=e[i].sum;}for(int i=0;i<n;i++){printf("%d\n",ans[i]);}return 0;
}
对拍代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
inline int read(){int x=0;int f=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}return x*f;
}
int main(){freopen("All.in","w",stdout);srand(int(time(NULL)));int n=rand()%100007+1;int m=rand()%1007+1;cout<<n<<' '<<m<<endl;for(int i=1;i<=n;i++){printf("%d %d %d\n",rand()%m+1,rand()%m+1,rand()%m+1);}return 0;
}
转载于:https://www.cnblogs.com/something-for-nothing/p/7884155.html
BZOJ 3262 陌上花开相关推荐
- bzoj 3262: 陌上花开(cdq分治)
3262: 陌上花开 Time Limit: 20 Sec Memory Limit: 256 MB Submit: 2433 Solved: 1087 [Submit][Status][Disc ...
- BZOJ - 3262 陌上花开
3262: 陌上花开 Time Limit: 20 Sec Memory Limit: 256 MB Submit: 5433 Solved: 2623 [Submit][Status][Disc ...
- bzoj 3262: 陌上花开
3262: 陌上花开 Time Limit: 20 Sec Memory Limit: 256 MB Submit: 5800 Solved: 2804 [Submit][Status][Discus ...
- bzoj 3262 陌上花开
本质是一个三维偏序,一位排序后cdq分治,一维在子函数里排序,一维用树状数组维护. 把三维相等的合并到一个里面. 1 #include<iostream> 2 #include<cs ...
- 3262: 陌上花开
3262: 陌上花开 Time Limit: 20 Sec Memory Limit: 256 MB Submit: 1423 Solved: 640 [ Submit][ Status][ ...
- BZOJ 3262 cdq分治 OR 树套树
注意判断 三个条件都一样的-- (CDQ分治 其实并不是很难理解 只是想不到--) CDQ分治: //By SiriusRen #include <cstdio> #include < ...
- [cdq分治][树状数组] Bzoj P3262 陌上花开
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量. 定义一朵花A比另一朵花B要美 ...
- 一句话题解(20170801~20170125)
8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...
- 分治、CDQ分治小结
分治.CDQ分治小结 A Summary for Divide and Conquer 0. Anouncement 本文部分图片以及部分内容来自互联网,内容过多就不一一注明出处了,冒犯之处还请海涵. ...
最新文章
- 怎么把python结果全部显示-python 显示数组全部元素的方法
- mysql修改界面代码_mysql修改编码
- 世安杯CTF writeup
- php业务网站资源网,企业创意业务网站模板
- 递归函数合式分解python_零基础学python-18.2 递归函数与分解递归函数的执行步骤
- android Mediaplayer各种属性和方法简单介绍
- pycharm的项目文件中包括什么_婚庆策划是什么?婚庆策划都包括哪些项目
- scala.list
- 电商3.0:构建互利共赢的生态圈
- html中使用过渡不显示,CSS3过渡不适用于显示属性
- GIS之旅——研究生总结
- Java 面向对象编程 tricks
- 阿里云:linux 一键安装web环境
- 【Shell Basic】source . 与 bash sh 的区别
- [人工智能-综述-6]:为什么说,系统的数学知识学习不是人工智能学习的必要条件
- mysql类exadata功能_EXADATA智能扫描
- python解析pdf乱码,python pdfkit 中文乱码问题的解决方案
- python绘制密度散点图
- 【游戏中的算法】取火柴游戏算法
- Linux云计算架构师:SSHD服务搭建管理和防止暴力破解
热门文章
- SpaceX的垂直起降火箭已经达到840 英尺高度
- 文科生也能搞定的深度学习漫画(下)
- 排列组合练习题(2)马路上有编号1,2,3,……,10个路灯,为节约用电又看清路面,可以把其中的三只灯关掉,但又不能同时关掉相邻的两只或三只,在两端的灯也不能关掉的情况下……
- 获取一天的开始时间和结束时间
- oracle oem12c,安装Oracle OEM 12c的过程(简单版)
- 【Proteus仿真】51单片机+LCD1602驱动模板
- Recordset对象属性(二)
- 数据安全相关防御技术 确保安全合规
- XScale交叉编译环境搭建及MPlayer移植
- Python爬虫实例:自制翻译机(简单)