博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SPOJ RATING
阅读量:4922 次
发布时间:2019-06-11

本文共 1187 字,大约阅读时间需要 3 分钟。

题意: 有N(N≤300000)coder, 每个coder[i]有两个属性A[i] 和 H[i] , 。

当(A[i] ≥ A[j] && H[i] ≥ H[j]) && (A[i] > A[j] || H[i] > H[j]) 时,认为coder[i] 比 coder[j]优秀 ,问每个coder[i]比多少个其他的coder优秀?
我的代码中 X为A   Y为H
先对X进行升序排序,X相同时对Y进行升序排序
1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 int c[100005],k,m,lv[300002]={
0}; 7 struct coder{ 8 int x,y,id; 9 }l[300002];10 int lowbit(int x){
return x&(-x);} //树状数组模板,直接用11 int sum(int b){12 int sum=0;13 while(b>0){14 sum+=c[b];15 b-=lowbit(b);16 }17 return sum;18 }19 void add(int x){20 while(x<=100005){21 ++c[x];22 x+=lowbit(x);23 }24 }25 bool cmp(coder a,coder b){26 return a.x==b.x?a.y
1&&l[i-1].x==l[i].x&&l[i-1].y==l[i].y)lv[l[i].id]=lv[l[i-1].id];//当X1=X2&&Y1=Y2时,直接调用else哪里的方法会统计过多38 else lv[l[i].id]=sum(l[i].y); //由于已将排好序的,而且经过判断,直接调用的时候,X1=X2时,Y2一定大于Y1,所以可以直接统计39 add(l[i].y);40 }41 for(int i=1;i<=k;i++){42 printf("%d\n",lv[i]); //按顺序一行一个输出43 }44 return 0;45 }

 

转载于:https://www.cnblogs.com/Mr-Xu-JH/p/3900916.html

你可能感兴趣的文章
css经典布局—stick footer布局
查看>>
div学习之div中dl-dt-dd的详解
查看>>
linux磁盘的两种分区方法【MBR(Master Boot Record)和GPT(GUID Partition Table)】
查看>>
当在hive中show&nbsp;table&nbsp;…
查看>>
随机森林(Random Forest)
查看>>
[转载]/etc/security/limits.conf解释及应用
查看>>
Spring 之 BeanFactory 源码 - 抽象/类 分析
查看>>
Python的math模块
查看>>
Linux下gcc相关
查看>>
获取URL的参数
查看>>
iphone真机(越狱)通讯录导入进模拟器
查看>>
剑指offer-删除链表中重复的结点
查看>>
mybatis自动生成mapper,dao映射文件
查看>>
IntelliJ IDEA 注册码
查看>>
C 调用数学函数pow时遇到 undefined reference [已解决]
查看>>
IDEA01 创建java项目、创建web项目
查看>>
Springboot21 整合redis、利用redis实现消息队列
查看>>
AJAX 总结
查看>>
[转]WPF中对Excel文件的导入导出操作详解
查看>>
导出模块化使用手册
查看>>