[优先队列]HDOJ5360 Hiking
题意:有n个人,每个人有两个参数$l$和$r$
邀请他们去hiking, 当 当前已经邀请到的人数大于等于$l$,并且小于等于$r$,那么这个人就会去
问最多能邀请到几个人
并输出 依次要邀请的人的编号(编号1~n)
先要按$l$排序($l$小的在前),因为所有$l$小于等于当前已经邀请到的人数的人才能被邀请
对上述能被邀请的人 要在对$r$排序($r$小的在前), 优先邀请$r$小的
用优先队列搞一下就好了
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod=; struct node
{
int l, r;
int id;
friend bool operator < (node a, node b)
{
return a.r>b.r;
}
} a[]; bool cmp(node a, node b)
{
return a.l<b.l;
} int ans[];
bool vis[];
priority_queue<node> q;
int main()
{
int t;
scanf("%d", &t);
while(t--)
{
int n;
scanf("%d", &n);
for(int i=; i<=n; i++)
{
a[i].id=i;
a[i].l=read();
scanf("%d", &a[i].l);
}
for(int i=; i<=n; i++)
scanf("%d", &a[i].r);
sort(a+, a++n, cmp);
while(!q.empty()) q.pop();
int cur=, num=;
memset(ans, , sizeof(ans));
memset(vis, , sizeof(vis));
for(int i=; i<n; i++)
{
while(cur<=n && a[cur].l<=i)
q.push(a[cur]), cur++;
while(!q.empty() && q.top().r<i)
q.pop();
if(!q.empty() && q.top().l<=num && q.top().r>=num)
ans[++num]=q.top().id, vis[q.top().id]=, q.pop();
else
break;
}
printf("%d\n", num);
for(int i=; i<=n; i++)
if(!vis[i])
ans[++num]=i;
for(int i=; i<=n; i++)
printf("%d%c", ans[i], (i==n? '\n': ' '));
}
return ;
}
HDOJ 5360
[优先队列]HDOJ5360 Hiking的更多相关文章
- hdu 5360 Hiking(优先队列+贪心)
题目:http://acm.hdu.edu.cn/showproblem.php? pid=5360 题意:beta有n个朋友,beta要邀请他的朋友go hiking,已知每一个朋友的理想人数[L, ...
- HDU 5360——Hiking——————【贪心+优先队列】
Hiking Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- 贪心+优先队列 HDOJ 5360 Hiking
题目传送门 /* 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小,该人能 被邀 ...
- hdu - 1242 Rescue && hdu - 2425 Hiking Trip (优先队列+bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1242 感觉题目没有表述清楚,angel的朋友应该不一定只有一个,那么正解就是a去搜索r,再用普通的bfs就能过了 ...
- HDU 5360 Hiking 登山 (优先队列,排序)
题意: 有n个人可供邀请去hiking,但是他们很有个性,每个人都有个预期的人数上下限[Li,Ri],只有当前确定会去的人数在这个区间内他才肯去.一旦他答应了,无论人数怎样变更,他都不会反悔.问最多能 ...
- hdu 2425 Hiking Trip (bfs+优先队列)
Problem Description Hiking in the mountains is seldom an easy task for most people, as it is extreme ...
- 2015多校第6场 HDU 5360 Hiking 贪心,优先队列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5360 题意:给定n个人,现在要邀请这些人去远足,但每个人同意邀请的条件是当前已经同意去远足的人数c必须 ...
- HDU 5360 Hiking(优先队列)2015 Multi-University Training Contest 6
Hiking Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- HDU 5360 Hiking(优先队列)
Hiking Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
随机推荐
- javaScript 连续子数列最大和
<!DOCTYPE html> <html> <head> <title></title> <meta charset=utf-8&g ...
- Linux下vsftpd搭建过程(防火墙版)
1.确认主机IP [root@www data]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:22:05:B8 ...
- C#定时器和事件
C#定时器和事件 System.Timers.Timer myTimer; private void Form1_Load(object sender, EventArgs e) { myTimer ...
- JQuery在iframe中实现 点击后选中当前栏目的样式
二级或者三级折叠菜单参考http://www.cnblogs.com/qigege/p/5178947.html <script type="text/javascript" ...
- PHP页面跳转代码
这年头,真是好记性不如烂笔头,学的还没有忘的快,刚才用到的页面跳转,却又记不清楚了,故特意整理了一下,用做以后参考.从一个网页跳转到另一个网页,是LAMP项目中最常用的技术之一,页面跳转可能是由于用户 ...
- this.IsMounted() is not a function
I'm trying to build a simple React App. It retrieves data from an ajax call and renders it to the pa ...
- C#中gridView常用属性和技巧介绍
.隐藏最上面的GroupPanel gridView1.OptionsView.ShowGroupPanel=false; .得到当前选定记录某字段的值 sValue=Table.Rows[gridV ...
- 3. opencv进行SIFT特征提取
opencv中sift特征提取的步骤 使用SiftFeatureDetector的detect方法检测特征存入一个向量里,并使用drawKeypoints在图中标识出来 SiftDescriptorE ...
- CodeForces 478B 第八次比赛 B题
Description n participants of the competition were split into m teams in some manner so that each te ...
- ESB概述
ESB概念的提出: 企业有大量的异构的业务系统,这些系统之间需要通过web service来交互数据,这样的话可以想象系统直接的交互关系是蜘蛛网状的,是难以维护的.这时候提出了ESB,每个业务系统只需 ...