poj 2010 优先队列~
来源:互联网 发布:淘宝如何自动发卡密 编辑:程序博客网 时间:2024/06/05 08:03
点击打开链接
#include <iostream>#include <algorithm>#include <queue>using namespace std;const int M=110000;__int64 Max=1<<30;typedef struct NODE{__int64 score;__int64 money;}Node;Node cow[M];__int64 n,c,f;long Lower[M],Upper[M]; //Lower[i] 在 0~i-1中 n/2个cow的最小花费 (n是奇数)bool cmp(Node a,Node b){return a.score<b.score;}void pre(){long i,half=n/2,total=0;priority_queue<long> q; //for(i=0;i<c;i++) {Lower[i]= q.size()==half? total:Max; // 队列元素不足half 说明 0~i-1个数小于half,第i个数不可能是中位数 q.push(cow[i].money);total+=cow[i].money;if(q.size()>half) {total-=q.top(); //最大的出列-> (队列中的half个元素之和始终是 0~i-1个中的最小花费(total))!!q.pop(); }}priority_queue<long> q1;total=0;for(i=c-1;i>=0;i--){Upper[i]= q1.size()==half? total:Max;q1.push(cow[i].money);total+=cow[i].money;if(q1.size()>half){total-=q1.top();q1.pop();}}}int main(){long i,k=0,flag=0;cin>>n>>c>>f;for(i=0;i<c;i++){cin>>cow[i].score>>cow[i].money;}sort(cow,cow+c,cmp); //sort分数从小到大 pre();for(i=c-1;i>=0;i--) //枚举最大中位数 {if(Lower[i]+cow[i].money+Upper[i]<=f){flag=1;cout<<cow[i].score<<endl;break;}}if(!flag) cout<<-1<<endl;return 0;}
0 0
- Poj 2010(优先队列)
- POJ 2010 优先队列
- poj 2010 优先队列~
- 优先队列 POJ 2010
- POJ-2010-优先队列
- POJ 2010 优先队列
- poj 2010 优先队列+贪心
- poj 2010(优先队列)
- POJ-2010-优先队列(解题报告)
- POJ 1442 优先队列
- POJ 1862 优先队列
- poj 3253 优先队列
- POJ 2442 优先队列
- POJ 1862 优先队列
- 【优先队列】poj 2833
- poj 2970 优先队列
- POJ-3253-优先队列
- poj 2970 优先队列
- Eclipse + Python 的安装与配置流程
- Mysql读写分离,同步复制的探索实现
- Jenkins 权威指南(中文版) 第一章 Jenkins的介绍
- Android自定义控件实战——滚动选择器PickerView
- JSF对应的实体类一定要使用set和get方法
- poj 2010 优先队列~
- Linux及Arm-Linux程序开发笔记(零基础入门篇)
- 在Ubuntu 15.04下安装Android Studio
- JAVA WEB 第一步 JAVA SE 1.8 ECLIPSE-JEE TOMCAT 8 2016年6月5日
- 位运算学习(一)
- java之基础(01)
- 异常分类-
- HtmlParser基础教程 - 在java中解析获取的HttpResponse
- 卷积神经网络(CNN)学习资料