[BZOJ]1071: [SCOI2007]组队 STL优先队列
Description
NBA每年都有球员选秀环节。通常用速度和身高两项数据来衡量一个篮球运动员的基本素质。假如一支球队里
速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有队员都应该满足: A * ( height
– minH ) + B * ( speed – minV ) <= C 其中A和B,C为给定的经验值。这个式子很容易理解,如果一个球队的
球员速度和身高差距太大,会造成配合的不协调。 请问作为球队管理层的你,在N名选秀球员中,最多能有多少名
符合条件的候选球员。
Input
第一行四个数N、A、B、C 下接N行每行两个数描述一个球员的height和speed
Output
最多候选球员数目。
吐槽:
我的方法复杂度为n2lognn^2logn,nn为20002000,竟然可以过……
代码:
#include<cstdio>
#include<cstring>
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
#define LL long long
LL A,B,C;
int N;
struct player
{LL height,speed,val;bool operator <(const player a) const {return val<a.val;}
}a[5010];
bool cmp(player x,player y){return x.speed>y.speed;}
priority_queue<LL>q;
LL ans=1LL;
int main()
{scanf("%d%lld%lld%lld",&N,&A,&B,&C);for(int i=1;i<=N;i++){scanf("%lld%lld",&a[i].height,&a[i].speed);a[i].height*=A;a[i].speed*=B;a[i].val=a[i].height+a[i].speed;}sort(a+1,a+1+N,cmp);for(int i=1;i<=N;i++)//枚举当前height的最小值 {LL minh=a[i].height,mins=a[i].speed;while(!q.empty())q.pop();q.push(a[i].val);for(int j=1;j<=N;j++)//枚举jif(j!=i&&a[j].height>=a[i].height){mins=min(mins,a[j].speed);if(a[i].val>C+mins+minh)break;//因为minh+C不会变,而mins单调递减,所以可以breakwhile(!q.empty()&&q.top()>C+mins+minh)q.pop();//踢人 if(a[j].val<=C+mins+minh)//判断j是否可以加入,可以则更新答案 {q.push(a[j].val);ans=max(ans,(LL)(q.size()));}}}printf("%lld",ans);
}
[BZOJ]1071: [SCOI2007]组队 STL优先队列相关推荐
- 1071: [SCOI2007]组队
1071: [SCOI2007]组队 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 1763 Solved: 546 [ Submit][ St ...
- (双指针) bzoj 1071
1071: [SCOI2007]组队 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 1267 Solved: 392 [Submit][Status ...
- BZOJ 1977: [BeiJing2010组队]次小生成树(Kruskal+树上倍增)
1977: [BeiJing2010组队] 次小生成树 Tree Time Limit: 10 Sec Memory Limit: 512 MB Description 小 C 最近学了很多最小生成树 ...
- stl优先队列定义可以吗_C ++ STL | 用户定义的优先级队列比较器
stl优先队列定义>可以吗 In this article, we are going to see how to write your comparator function for prio ...
- STL优先队列实现堆(模板 附力扣题目)
讲解视频:https://www.bilibili.com/video/BV12i4y1f7ky/ 堆的本质 堆是一种特殊的完全二叉树.每一个节点的值都大于等于或者小于等于其孩子节点的值. 堆的操作时 ...
- [BZOJ]1071 组队(SCOI2007)
一道比较NB的套路题. Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为mi ...
- BZOJ 1071组队
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1071 题目很好,居然写了很久,题解找了真多: 主要两种做法: O(n^2lgn),通过优先 ...
- C++ STL 优先队列
//优先队列 //Priority_queue //STL #include<iostream> #include<cstdio> #include<cstdlib> ...
- BZOJ 1070: [SCOI2007]修车(最小费用最大流)
建图很神奇..建完图其实就是裸的费用流了.. -------------------------------------------------------------- #include<cs ...
最新文章
- matlab中的containers.Map()
- st-link和jlink调试stm32接线注意事项
- AI创想秀,邂逅“华为云ModelArts”征文大赛——第一次收官
- 在基于Jetty Fast CGI Proxy和php-fpm下配置Discuz
- sharepoint部件webparth关闭找回的方法
- 推荐系统的封闭和禁锢问题
- 【王俊杰de人工智能实战课】第7次作业2
- sparkr基本操作1
- 第二次项目冲刺(Beta阶段)--第五天
- 阿里云数据盘分区并挂载
- 墨盒注墨后出现断线或堵头的处理方法
- 推荐一个商业级saas开源小程序电商java项目
- AutoCAD实用功能之查看xdata扩展属性
- 3月28日服务器维护,4月28日服务器例行维护公告
- ArcGIS拓扑功能的应用:将点的数据落入面内
- psd导出jpg太大_为什么我最近PS存出来 的JPG图片都很大
- 玩转视频类信息流广告平台,投放技巧及运营思路看这里
- 手机构建Linux环境,Linux手机DIY.构建统一安装包
- 运动耳机排行榜10强,运动人士必备的几款运动耳机分享
- Linux如何制作efi启动盘,教你制作macOS+Ubuntu+WindowsPE超级启动盘(仅支持UEFI)
热门文章
- PostgreSQL 11 1000亿 tpcb、1000W tpcc 性能测试 - on 阿里云ECS + ESSD (含quorum based 0丢失多副本配置与性能测试)...
- uefi怎么念_UEFI是什么,看完您就全明白了
- uefi启动解析:由原理到实例
- Datadog 笔记
- 基于WIFI无线组网的水雨情远程监测预警系统
- (原)hisi3531立体声pcm实现播放方式
- 推荐一个很不错的桌面便笺工具magic notes
- OJ每日一练——小青蛙上台阶
- 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?
- 微信新出“一键拒收”功能!公众号主怎么办?