hdu 4393 优先队列
用优先队列储存每个人的初始距离和编号,每轮求出最快的人,然后pop掉
一开始想遍历队列的,后来发现队列没办法遍历,汗-_-!
题意,给几个第一秒冲出的距离和以后速度,求每秒后最前面人的编号,求完后最前面的退出
2
3
100 1
100 2
3 100
5
1 1
2 2
3 3
4 1
3 4
Case #1:
1 3 2
Case #2:
4 5 3 2 1
Hint
The first case: 1st Second end
Player1 100m (BOOM!!)
Player2 100m
Player3 3m 2nd Second end
Player2 102m
Player3 103m (BOOM!!) 3rd Second end
Player2 104m (BOOM!!)
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
const int maxn=;
int n,m,t;
struct node
{
int id;
int dis;
int v;
node(){}
friend bool operator<(node a,node b)
{
if(a.dis!=b.dis) return a.dis<b.dis; //距离大的先出队
else return a.id>b.id;
}
};
priority_queue<node> q[maxn];
int main()
{
int i,j,k;
//freopen("1.in","r",stdin);
scanf("%d",&t);
node qq;
int s,v,ca=;
while(t--)
{
ca++;
scanf("%d",&n);
for(i=;i<=n;i++)
{
scanf("%d%d",&qq.dis,&v);
qq.id=i;
q[v].push(qq);
}
printf("Case #%d:\n",ca);
for(i=;i<n;i++)
{
int fast=-,iid=; //最快的人距离和编号
for(j=;j<=;j++)
{
if(!q[j].empty())
{
node temp=q[j].top();
if(temp.dis+i*j>fast) fast=temp.dis+i*j,iid=j;
else if(temp.dis+i*j==fast&&temp.id<q[iid].top().id)iid=j;
}
}
printf("%d",q[iid].top().id);
q[iid].pop();
if(i<n-)printf(" ");
else printf("\n");
}
}
return ;
}
hdu 4393 优先队列的更多相关文章
- hdu 4393 Throw nails(STL之优先队列)
Problem Description The annual school bicycle contest started. ZL is a student in this school. He is ...
- HDU 4393 Throw nails(优先队列)
优先队列的应用 好坑,好坑,好坑,重要的事情说三遍! #include<iostream> #include<cstdio> #include<cstring> # ...
- hdu 5306 优先队列
用到优先队列 #include<iostream> #include<string> #include<algorithm> #include<cstdio& ...
- HDU 4006 优先队列
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- hdu 5818 (优先队列) Joint Stacks
题目:这里 题意: 两个类似于栈的列表,栈a和栈b,n个操作,push a x表示把数x放进a栈的栈底,pop b 表示将栈b的栈顶元素取出输出,并释放这个栈顶元素,merge a b表示把后面的那个 ...
- hdu 4302 优先队列
进一步学习了优先队列的用法 题意:一只小动物在直线上走,起始位置为零,之后会出现食物,动物要去距离自己最短的食物那,若两边的食物距离相等,则选择之前走的方向的食物 0 x,代表x的位置出现了食物,1代 ...
- HDU 1058 优先队列or堆
本来应当是一道优先队列或者堆的题 因为每个数都应该是已经得到的数*2 *3 *5 *7而得到的 但是 2*7 大于 3*2 这就必须保证每次取得都是没有拿过的最小的数 但是它主动降低难度在样例里卖了个 ...
- hdu 2258 优先队列
Continuous Same Game (1) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- HDU 4393 Throw nails
Throw nails Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
随机推荐
- Jenkins 搭建U3D自动发布 IOS
http://www.cnblogs.com/yinghuochong/archive/2013/09/01/3294940.html 1.安装包,工具略过. 2.插件管理 Subversion Pl ...
- 锋利的jQuery-1--jQuery对象和DOM对象以及相互转化
DOM对象: document object model,文档对象模型,每一份dom都可以表示成一棵树. 如下图所示,代码省略 在这颗dom树种,h3, p, ul以及ul的3个li子节点都是dom元 ...
- Java操作xml文件
Bbsxml.java public class Bbsxml { private String imgsrc; private String title; private String url; p ...
- poj1013.Counterfeit Dollar(枚举)
Counterfeit Dollar Time Limit: 1 Sec Memory Limit: 64 MB Submit: 415 Solved: 237 Description Sally ...
- PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数详解
求两个数组的交集问题可以使用 array_intersect(),array_inersect_assoc,array_intersect_key来实现,其中 array_intersect()函数是 ...
- Android之项目推荐使用的第三方库,有助于快速开发,欢迎各位网友补充
1. 使用上拉更多,下拉刷新:https://github.com/JosephPeng/XListView-Android这个是github上面更为火爆的:https://github.com/ch ...
- 虚拟机里面安装Openfiler 2.99
简介 Openfiler 由rPath Linux驱动,它是一个基于浏览器的免费网络存储管理实用程序,可以在单一框架中提供基于文件的网络连接存储 (NAS) 和基于块的存储区域网 (SAN).Open ...
- DNS原理及其解析过程【精彩剖析】(转)
2012-03-21 17:23:10 标签:dig wireshark bind nslookup dns 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否 ...
- opencv中,c和c++版本区别体验
参考:http://www.cnblogs.com/tornadomeet/archive/2012/04/29/2476277.html
- DICOM:DICOM3.0网络通信协议
转载:http://blog.csdn.net/zssureqh/article/details/41016091 背景: 专栏取名为DICOM医学图像处理原因是:博主是从医学图像处理算法研究时开始接 ...