贪心+优先队列 HDOJ 5360 Hiking
题目传送门
1 /* 2 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 3 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小,该人能 被邀请,而且不用考虑最少人数的条件。网上的写的比我简洁,学习了。 4 详细解释:http://blog.csdn.net/queuelovestack/article/details/47319361 5 */ 6 /************************************************ 7 * Author :Running_Time 8 * Created Time :2015-8-6 14:51:47 9 * File Name :H.cpp 10 ************************************************/ 11 12 #include <cstdio> 13 #include <algorithm> 14 #include <iostream> 15 #include <sstream> 16 #include <cstring> 17 #include <cmath> 18 #include <string> 19 #include <vector> 20 #include <queue> 21 #include <deque> 22 #include <stack> 23 #include <list> 24 #include <map> 25 #include <set> 26 #include <bitset> 27 #include <cstdlib> 28 #include <ctime> 29 using namespace std; 30 31 #define lson l, mid, rt << 1 32 #define rson mid + 1, r, rt << 1 | 1 33 typedef long long ll; 34 const int MAXN = 1e5 + 10; 35 const int INF = 0x3f3f3f3f; 36 const int MOD = 1e9 + 7; 37 struct Node { 38 int l, r, id; 39 bool operator < (const Node &x) const { 40 return r > x.r; 41 } 42 }node[MAXN]; 43 priority_queue<Node> Q; 44 bool vis[MAXN]; 45 int ans[MAXN]; 46 int n; 47 48 bool cmp(Node x, Node y) { 49 if (x.l == y.l) return x.r < y.r; 50 return x.l < y.l; 51 } 52 53 int main(void) { //HDOJ 5360 Hiking 54 int T; scanf ("%d", &T); 55 while (T--) { 56 scanf ("%d", &n); 57 for (int i=1; i<=n; ++i) { 58 scanf ("%d", &node[i].l); node[i].id = i; 59 } 60 for (int i=1; i<=n; ++i) { 61 scanf ("%d", &node[i].r); 62 } 63 sort (node+1, node+1+n, cmp); 64 65 if (node[1].l != 0) { 66 puts ("0"); 67 for (int i=1; i<=n; ++i) printf ("%d%c", i, (i==n) ? '\n' : ' '); 68 continue; 69 } 70 memset (vis, false, sizeof (vis)); 71 while (!Q.empty ()) Q.pop (); 72 int i = 1, p = 0; 73 for (; i<=n && p==node[i].l; ++i) Q.push (node[i]); 74 while (!Q.empty ()) { 75 while (!Q.empty ()) { 76 if (p <= Q.top ().r) { 77 ans[++p] = Q.top ().id; 78 vis[ans[p]] = true; Q.pop (); break; 79 } 80 else Q.pop (); 81 } 82 for (; i<=n && p==node[i].l; ++i) Q.push (node[i]); 83 } 84 85 printf ("%d\n", p); 86 printf ("%d", ans[1]); 87 for (int i=2; i<=p; ++i) { 88 printf (" %d", ans[i]); 89 } 90 for (int i=1; i<=n; ++i) { 91 if (!vis[i]) printf (" %d", i); 92 } 93 puts (""); 94 } 95 96 return 0; 97 }
转载于:https://www.cnblogs.com/Running-Time/p/4709048.html
贪心+优先队列 HDOJ 5360 Hiking相关推荐
- HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解
思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...
- 1163 最高的奖励(贪心+优先队列)
有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励.在结束时间之前完成该任务,就可以获得对应的奖励.完成每一个任务所需的时间都是1个单位时间.有时候完成所有任务是不可能的,因为时间上可能会有冲突 ...
- 贪心(优先队列) - New Year Snowmen - CodeForces - 140C
贪心(优先队列) - New Year Snowmen - CodeForces - 140C 题意: 给定一个长度为n的正整数序列a1,a2,...,an.给定一个长度为n的正整数序列a_1,a_2 ...
- CodeForces 140C New Year Snowmen (贪心+优先队列)
题意:n个数,选三个严格下降的数为一组,求最多能选多少组,并列出每组哪些数. 题解:贪心+优先队列 最多能选多少组,那么必须贪心数量多的. 例如:1 1 2 3 4 5 如果按照数的大小排序,只能贪到 ...
- CF140C New Year Snowmen(贪心+优先队列)
CF140C 贪心+优先队列 贪心策略:每次取出数量最多的三种球,合成一个答案,再把雪球数都-1再插回去,只要还剩下三种雪球就可以不断地合成 雪球数用优先队列维护 #include <bits/ ...
- 【BHOJ 女娲加农炮 |、||】贪心 | 优先队列 | 堆 | E
这次我们通过两道例题来总结一下优先队列的用法和实现: 目录: [BHOJ 1512]女娲加农炮 [BHOJ 1517]女娲加农炮II [BHOJ 1512]女娲加农炮 核心:贪心 + 优先队列 URL ...
- codeforces D. Fedor and coupons 贪心+优先队列
题目地址:点击打开链接 D. Fedor and coupons time limit per test 4 seconds memory limit per test 256 megabytes i ...
- 小A与任务 (贪心 优先队列)
题目链接:小A与任务 题意: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费 xi 的时间,同时完成第 i 个任务的时间不能晚于 ...
- LA 4254 Processor 处理器 【二分 贪心 优先队列】
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21663 二分: 最大值最小的问题通过二分来求解.对处理器速度进行 ...
最新文章
- 深入理解JVM(二)--垃圾收集算法
- 美国中学生被学校监控,实时位置、和谁接触一览无余
- SQL Story摘录(七)————触摸NULL值
- dp按照规模分类总结
- 中间表该怎么查询_「日语四级」日语四级准考证号忘了怎么查成绩
- leetcode python3 简单题121. Best Time to Buy and Sell Stock
- Spring Boot 学习系列(01)—从0到1,只需两分钟
- vue不是内部或外部命令_vue脚手架
- oracle ORA-00054 资源正忙
- STM32学习记录0004——ISP串口下载
- JavaScript实用手册
- 投资理财——如何选择基金
- J2ME学习过程中的一点心得整理(参考:java手机/PDA程序设计入门 王森)
- 关于 ELEMENTOR 的常见问题
- jsp页面适应手机屏幕_Jsp编写的页面如何适应手机浏览器页面
- ev4加密视频转mp4工具使用教程
- 高尔夫球场难度系数_在高尔夫球场上表现出色
- 压缩包文件如何将密码找回来
- 浩辰CAD看图王中如何一键替换CAD图纸中大量相同的文字?
- Asio的Buffer应该如何使用