Codeforces 913D - Too Easy Problems
2018-01-10 09:25
417 查看
题面
题意
给出n道题目,每个题目有一个a,一个b,需要b时间来完成,并且题目总量小于等于a时,此题有效,一题一分,输出用t时间得到的最高分以及做题方案.做法
因为每一题的分值一样,因而可以用贪心来做,先将所有题目按照a从高到低排序(这样排序则扫到后面不需要考虑题目总量是否超过a),之后维护一个按时间排序的大根堆和size,sum记录此时做题数量和花时间的总和,按之前的排序来考虑,每道题只考虑三种操作:1.插入 时间之和不超过t.
2.替换 比堆中时间最长的题的时间要短
3.不做任何操作
当此时的size小于等于当前考虑题目的a时,即为最大值(后面的题目都无效),输出即可.
代码
#include<iostream> #include<cstdio> #include<algorithm> #include<queue> #define N 200100 using namespace std; int n,sum,ans,size,t,as ,aa; struct Node { int time_need,most,pos; bool operator < (const Node &u) const { return time_need<u.time_need; } } node ; priority_queue<Node>pq; inline bool cmp(Node u,Node v) { return u.most>v.most||u.most==v.most&&u.time_need<v.time_need; } int main() { int i,j; cin>>n>>t; for(i=1; i<=n; i++) { scanf("%d%d",&node[i].most,&node[i].time_need); node[i].pos=i; } sort(node+1,node+n+1,cmp); for(i=1; i<=n; i++) { if(node[i].most<=size) { printf("%d\n%d\n",size,size); for(; !pq.empty(); pq.pop()) { printf("%d ",pq.top().pos); } return 0; } if(sum+node[i].time_need<=t) { pq.push(node[i]); size++; sum+=node[i].time_need; } else if(!pq.empty()&&node[i].time_need<pq.top().time_need) { sum-=pq.top().time_need-node[i].time_need; pq.pop(); pq.push(node[i]); } } printf("%d\n%d\n",size,size); for(; !pq.empty(); pq.pop()) { printf("%d ",pq.top() b67b .pos); } }
相关文章推荐
- Codeforces 913D - Too Easy Problems(贪心+优先队列)
- Codeforces 913D - Too Easy Problems 【优先队列】
- Codeforces 913DToo Easy Problems (优先队列 & 贪心)
- 【CodeForces】913 D. Too Easy Problems
- Hello 2018 D. Too Easy Problems
- Codeforces Hello 2018 D. Too Easy Problems (二分)
- Codeforces Hello 2018 - D - Too Easy Problems
- D. Too Easy Problems(贪心+优先队列)
- Codeforces 913D oo Easy Problems
- Hello 2018 D. Too Easy Problems(贪心+优先队列)
- 【Hello 2018 D】Too Easy Problems
- D. Too Easy Problems(二分,排序,贪心)
- D. Too Easy Problems(贪心)
- codeforces 96B Lucky Numbers (easy)
- [Easy]CodeForces - 897C Nephren gives a riddle | dfs + 特判
- codeforces 236 B. Easy Number Challenge
- AtCoder Grand Contest 005F - Many Easy Problems
- codeforces 690C1 C1. Brain Network (easy)(水题)
- [Easy] CodeForces - 897D Ithea Plays With Chtholly | 贪心博弈
- CodeForces-71A-Way Too Long Words