HDU 6003 Problem Buyer(贪心)
2017-07-26 15:55
288 查看
/** E - Problem Buyer 题意:主持人主持一场比赛需要M个题目,每个题目的难度要求是Ci,一个公司提供M个题目,每个题目的难度为[Ai,Bi],问主持人 最少需要购买多少个题目才能保证一定能办成这个比赛(买K个题目的时候公司从M个题目中任意挑选K个),不满足输出impossible 思路:对区间按左端点为关键字从小到大排序,举办比赛题目的难度从小到大排序,枚举每个难度,最终的结果一定是这样的:买的K个题目的 前K-1个题目的区间一定不包含这个难度,而最后一个满足,难度从左到右扫描,优先队列维护在这个点的区间数量,然后取max(n - 队列size+1) +1是因为最后一个区间一定包含这个难度,最后扫描完一个点在队列要pop一个,代表需要给这个点一个区间,因为可能Ci, Ci+1都在一个区间内 **/ #include<cstdio> #include<cstring> #include<queue> #include<algorithm> typedef long long ll; const int maxn = 1e5 + 10; const int INF = 1e8; using namespace std; typedef pair<int, int> par; int T, n, m, kase = 1; int C[maxn]; par pa[maxn]; int main() { scanf("%d", &T); while(T--) { scanf("%d %d", &n, &m); for(int i = 0; i < n; i++) scanf("%d %d", &pa[i].first, &pa[i].second); for(int i = 0; i < m; i++) scanf("%d", &C[i]); priority_queue<int, vector<int>, greater<int> > que; sort(pa, pa + n); sort(C, C + m); int ans = 0; for(int i = 0, it = 0; i < m; i++) { while(it < n && pa[it].first <= C[i]) que.push(pa[it++].second); while(!que.empty() && que.top() < C[i]) que.pop(); if(que.empty()) { ans = -1; break; } ans = max(ans, n - (int)que.size()); que.pop(); } if(ans != -1) printf("Case #%d: %d\n", kase++, ans + 1); else printf("Case #%d: IMPOSSIBLE!\n", kase++); } return 0; }
相关文章推荐
- hdu 6003 Problem Buyer(贪心)
- hdu6003 Problem Buyer 贪心 给定n个区间,以及m个数,求从n个区间中任意选k个区间,满足m个数都能在k个区间中找到一个包含它的区间,如果一个区间包含了x,那么 该区间不能再去包含另一个数,即k>=m。求最小的k。如果不存在这样的k,输出“IMPOSSIBLE!”。
- 规律,模拟,贪心(Travelling Salesman Problem,HDU 5402)
- http://acm.hdu.edu.cn/showproblem.php?pid=1789 很好的贪心题目
- hdu - 4974 - A simple water problem(贪心 + 反证)
- hdu - 4974 - A simple water problem(贪心 + 反证)
- HDU 4974 A simple water problem(贪心)
- HDU 4974 A simple water problem(贪心)
- hdu----(5055)Bob and math problem(贪心)
- Ugly Problem HDU - 5920 模拟+贪心。。
- hdu - 4974 - A simple water problem(贪心 + 反证)
- hdu 5055 Bob and math problem (很简单贪心)
- HDU 5055 - Bob and math problem(贪心)
- HDU 5055 Bob and math problem(贪心)——BestCoder Round #11(div.2)
- HDU 5920 Ugly Problem CCPC长春赛区 贪心
- HDU 4976 A simple greedy problem. 贪心+DP
- HDU 4291 A Short problem
- hdu 6092 Rikka with Subset 背包(贪心)
- HDU 1002 A + B Problem II (Java 之大整数)
- HDU 4296 Buildings 公式证明贪心的正确性