3262: 陌上花开

Time Limit: 20 Sec   Memory Limit: 256 MB
Submit: 1423   Solved: 640
[ 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分治

[ Submit][ Status][ Discuss]



排序一维

树状数组一维

线段树一维

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;const int maxn = 2E5 + 20;
const int T = 100;struct data{int a,b,c,Num;data(){}data(int a,int b,int c,int Num): a(a),b(b),c(c),Num(Num){}bool operator < (const data &B) const {return a < B.a;}
}f[maxn];int n,m,cnt,Root[maxn],lc[maxn*T],rc[maxn*T],c[maxn*T],rank[maxn],ans[maxn];int Getlc(int o) {return lc[o]?lc[o]:lc[o] = ++cnt;}
int Getrc(int o) {return rc[o]?rc[o]:rc[o] = ++cnt;}int Query(int o,int l,int r,int ql,int qr)
{if (ql <= l && r <= qr) return c[o];if (!o) return 0;int mid = (l + r) >> 1,ret = 0;if (ql <= mid) ret += Query(lc[o],l,mid,ql,qr);if (qr > mid) ret += Query(rc[o],mid + 1,r,ql,qr);return ret;
}void Insert(int o,int l,int r,int pos)
{if (l == r) {++c[o];return;}int mid = (l + r) >> 1;if (pos <= mid) Insert(Getlc(o),l,mid,pos);else Insert(Getrc(o),mid + 1,r,pos);c[o] = c[lc[o]] + c[rc[o]];
}int getint()
{char ch = getchar();int ret = 0;while (ch < '0' || '9' < ch) ch = getchar();while ('0' <= ch && ch <= '9')ret = ret*10 + ch - '0',ch = getchar();return ret;
}int main()
{#ifdef DMCfreopen("DMC.txt","r",stdin);#endifn = getint(); m = getint();for (int i = 1; i <= n; i++) {int a,b,c;a = getint();b = getint();c = getint();f[i] = data(a,b,c,i);}sort(f + 1,f + n + 1);int L = 1;for (int i = 1; i <= n + 1; i++) {if (f[i].a != f[i-1].a && i > 1) {for (int j = L; j < i; j++) {for (int l = f[j].b; l > 0; l -= l&-l)rank[f[j].Num] += Query(Root[l],1,m,1,f[j].c);--rank[f[j].Num];}L = i;}if (i == n + 1) break;for (int j = f[i].b; j <= m; j += j&-j) {if (!Root[j]) Root[j] = ++cnt;Insert(Root[j],1,m,f[i].c);}}for (int i = 1; i <= n; i++) ++ans[rank[i]];for (int i = 0; i < n; i++)printf("%d\n",ans[i]);return 0;
}

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: 2590  Solved: 1159 [Submit][Status][Disc ...

  3. BZOJ - 3262 陌上花开

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

  4. bzoj 3262: 陌上花开

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

  5. bzoj 3262 陌上花开

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

  6. 【BZOJ-3262】陌上花开 CDQ分治(3维偏序)

    3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MB Submit: 1439  Solved: 648 [Submit][Status][Discu ...

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

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

  8. 分治、CDQ分治小结

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

  9. 分治、CDQ分治小结(need to be updated)

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

最新文章

  1. Cocos2d-x 截屏功能集成
  2. react hook——你可能不是“我”所认识的useEffect
  3. c语言编制编程语言,C语言CGI编程入门(一)
  4. 人工智能切入垂直领域 风口已至?
  5. MariaDB数据库介绍之一、备份(mysqldump、lvm2快照、xtrabackup)
  6. mysql常用的语句_MySQL常用语句集锦
  7. (转)比特币该如何扩容
  8. 苹果申请新专利,iPhone或取消刘海设计
  9. 欧美相关出口企业要注意了!
  10. 俄语转化成拉丁字母java_java - 如何在Java String中将西里尔字母转换为英语拉丁语? - SO中文参考 - www.soinside.com...
  11. Android开发新技术
  12. c++ 字母a~z升序排列编号 字典序问题 递归
  13. MacbookPro电脑Hosts文件位置在哪里修改
  14. 电机保护器ARD3T 过载、断相、不平衡、欠载、接地/漏电、堵转等保护功能
  15. 微服务实战|微服务网关Zuul入门与实战
  16. 仿微信、QQ聊天页面软键盘遮挡聊天对话的解决办法
  17. LTE调度算法(下行)
  18. 项目中的Ulua使用感想
  19. python制作图片数据集 h5py_python库——h5py入门讲解
  20. 电影分级USA、HK

热门文章

  1. JAVA的JDBC连接MYSQL数据库并查询数据
  2. SR-TE Policy(思科)----explicit path 实验
  3. 【Python稀疏矩阵】
  4. 1098:质因数分解
  5. StringUtils. indexOf 用法
  6. 清除linux系统日志文件,LINUX系统日志的清除
  7. CF 1617C. Paprika and Permutation
  8. Implicit function
  9. Erlang报错Crash dump is being written to: erl_crash.dump...done
  10. 把一个字符串分割成数组 php_PHP怎么将字符串拆分成数组