3262: 陌上花开

Time Limit: 20 Sec  Memory Limit: 256 MB
Submit: 2590  Solved: 1159
[Submit][Status][Discuss]

Description

有n朵花,每朵花有三个属性:花形(s)、颜色(c)、气味(m),又三个整数表示。现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量。定义一朵花A比另一朵花B要美丽,当且仅当Sa>=Sb,Ca>=Cb,Ma>=Mb。显然,两朵花可能有同样的属性。需要统计出评出每个等级的花的数量。

Input

第一行为N,K (1 <= N <= 100,000, 1 <= K <= 200,000 ), 分别表示花的数量和最大属性值。
以下N行,每行三个整数si, ci, mi (1 <= si, ci, mi <= K),表示第i朵花的属性

Output

包含N行,分别表示评级为0...N-1的每级花的数量。

Sample Input

10 3
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

3
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 陌上花开相关推荐

  1. bzoj 3262: 陌上花开(cdq分治)

    3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MB Submit: 2433  Solved: 1087 [Submit][Status][Disc ...

  2. BZOJ - 3262 陌上花开

    3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MB Submit: 5433  Solved: 2623 [Submit][Status][Disc ...

  3. bzoj 3262: 陌上花开

    3262: 陌上花开 Time Limit: 20 Sec Memory Limit: 256 MB Submit: 5800 Solved: 2804 [Submit][Status][Discus ...

  4. bzoj 3262 陌上花开

    本质是一个三维偏序,一位排序后cdq分治,一维在子函数里排序,一维用树状数组维护. 把三维相等的合并到一个里面. 1 #include<iostream> 2 #include<cs ...

  5. 3262: 陌上花开

    3262: 陌上花开 Time Limit: 20 Sec   Memory Limit: 256 MB Submit: 1423   Solved: 640 [ Submit][ Status][ ...

  6. BZOJ 3262 cdq分治 OR 树套树

    注意判断 三个条件都一样的-- (CDQ分治 其实并不是很难理解 只是想不到--) CDQ分治: //By SiriusRen #include <cstdio> #include < ...

  7. [cdq分治][树状数组] Bzoj P3262 陌上花开

    Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量. 定义一朵花A比另一朵花B要美 ...

  8. 一句话题解(20170801~20170125)

    8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...

  9. 分治、CDQ分治小结

    分治.CDQ分治小结 A Summary for Divide and Conquer 0. Anouncement 本文部分图片以及部分内容来自互联网,内容过多就不一一注明出处了,冒犯之处还请海涵. ...

最新文章

  1. 怎么把python结果全部显示-python 显示数组全部元素的方法
  2. mysql修改界面代码_mysql修改编码
  3. 世安杯CTF writeup
  4. php业务网站资源网,企业创意业务网站模板
  5. 递归函数合式分解python_零基础学python-18.2 递归函数与分解递归函数的执行步骤
  6. android Mediaplayer各种属性和方法简单介绍
  7. pycharm的项目文件中包括什么_婚庆策划是什么?婚庆策划都包括哪些项目
  8. scala.list
  9. 电商3.0:构建互利共赢的生态圈
  10. html中使用过渡不显示,CSS3过渡不适用于显示属性
  11. GIS之旅——研究生总结
  12. Java 面向对象编程 tricks
  13. 阿里云:linux 一键安装web环境
  14. 【Shell Basic】source . 与 bash sh 的区别
  15. [人工智能-综述-6]:为什么说,系统的数学知识学习不是人工智能学习的必要条件
  16. mysql类exadata功能_EXADATA智能扫描
  17. python解析pdf乱码,python pdfkit 中文乱码问题的解决方案
  18. python绘制密度散点图
  19. 【游戏中的算法】取火柴游戏算法
  20. Linux云计算架构师:SSHD服务搭建管理和防止暴力破解

热门文章

  1. SpaceX的垂直起降火箭已经达到840 英尺高度
  2. 文科生也能搞定的深度学习漫画(下)
  3. 排列组合练习题(2)马路上有编号1,2,3,……,10个路灯,为节约用电又看清路面,可以把其中的三只灯关掉,但又不能同时关掉相邻的两只或三只,在两端的灯也不能关掉的情况下……
  4. 获取一天的开始时间和结束时间
  5. oracle oem12c,安装Oracle OEM 12c的过程(简单版)
  6. 【Proteus仿真】51单片机+LCD1602驱动模板
  7. Recordset对象属性(二)
  8. 数据安全相关防御技术 确保安全合规
  9. XScale交叉编译环境搭建及MPlayer移植
  10. Python爬虫实例:自制翻译机(简单)