首页 > 代码库 > codevs 2830 蓬莱山辉夜
codevs 2830 蓬莱山辉夜
传送门
2830 蓬莱山辉夜
时间限制: 1 s
空间限制: 32000 KB
题目等级 : 黄金 Gold
题目描述 Description
在幻想乡中,蓬莱山辉夜是月球公主,居住在永远亭上,二次设定说她成天宅在家里玩电脑,亦称NEET姬
一天,她要她帮忙升级月球的网络服务器,应为注册用户过多(月兔和地球上的巫女都注册了……),所以作为代理管理员(俗称网管)的她,非常蛋疼。
注册用户格式:
TouhouMaiden 2004 200
其中前面的Touhoumaiden是预设,不做更改,第一个数是标识,第二个数是每次接受信息访问的间隔用时。
你要做的事,就是给定一群用户及n,求出这n次信息访问中,访问到了谁?
presented by Izayoi sakuya
输入描述 Input Description
以题目预设格式输入,另起一行以‘#’结束,在其一行输入n
输出描述 Output Description
n行,每行输出第行次后,信息访问到了谁?若在一个时间有若干少女被访问到,输出字典序最小的那位少女的标识
样例输入 Sample Input
TouhouMaiden 2004 200
TouhouMaiden 2005 300
#
5
样例输出 Sample Output
2004 2005 2004 2004 2005
数据范围及提示 Data Size & Hint
标识和每次信息访问间隔均在integer内,n<=10000
原本是要用到堆,但深搜+时间即可搞定
数据有点少但也都够变态了
【思路】
堆
每次访问之后将他的时间+他的访问间隔插入堆中。
模拟数据就能知道大体的过程。
【code】
#include<iostream> #include<cstdio> #include<algorithm> #include<queue> using namespace std; int n,id,wait; string s; struct Per { int id,t,wait; bool operator < (const Per b) const { if(t==b.t)return id>b.id; return t>b.t; } }; priority_queue<Per>q; int main() { cin>>s; // while(scanf("%s",s)&&s[0]!=‘#‘) while(s[0]!=‘#‘) { scanf("%d%d",&id,&wait); { Per x; x.id =id;x.wait=wait;x.t=wait; q.push(x); } cin>>s; } scanf("%d",&n); for(int i=1;i<=n;i++) { Per y=q.top();q.pop(); printf("%d\n",y.id); y.t+=y.wait; q.push(y); } return 0; }
codevs 2830 蓬莱山辉夜
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。