hdu 4393 Throw nails
来源:互联网 发布:张卜天的翻译水平知乎 编辑:程序博客网 时间:2024/05/16 07:19
题目大意:
给你n个人,他们在进行一场自行车竞速比赛,每个人在第1s时走fi米,以后每秒走si米,一个小孩在仍钉子破坏比赛,每秒他都选最靠前的那个人,如果有多个人,选编号最小的那个,问你这些人依次被破退出比赛的顺序。(1 <= n <= 50000)(0 <= Fi <= 500)(0 < Si <= 100)
题解:
下面是官方的题解,比赛时我没做出来,原因在于忘记了(0 < Si <= 100)的数据范围.
法一
考虑Fi最大只有500,所以501s之后只有 speed 对排名有影响(此时如果F也相同,则按ID顺序),排序即可。前501s暴力查找,然后直接按照排序结果输出。
法二
当 way 和 speed 呈二维不递增序列时,排名不会发生变化。排序后暴力查找到way和speed满足这个条件即可。
法三
考虑Si最大只有100,所以我们可以建立优先队列数组s[1..100],对于每个优先队列,按第一关键字Fi第二关键字ID排序,每次取出所有的优先队列里最大值,然后直接 计算(Time-1)*Si + Fi 找最大的way,将对应的优先队列pop并输出对应ID即可。
下面是用第三种方法AC的程序
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<queue>using namespace std;struct node{ int f,id; bool operator<(const node& b)const { return (f<b.f)||(f==b.f && id>b.id); }};priority_queue<node> s[120];int sec,n;int main(){ scanf("%d",&sec); for(int z=1;z<=sec;z++) { scanf("%d",&n); for(int i=1;i<=n;i++) { node t;int f,d; scanf("%d%d",&f,&d); t.f=f; t.id=i; s[d].push(t); } printf("Case #%d:\n",z); for(int i=1;i<=n;i++) { int maxx=-1,minid=1<<28;int re; for(int j=1;j<=100;j++) if(!s[j].empty()) { node t=s[j].top(); if((i-1)*j+t.f>maxx || ((i-1)*j+t.f==maxx && t.id<minid)) { maxx=(i-1)*j+t.f; re=j; minid=t.id; } } int tem=s[re].top().id; if(i==n)printf("%d\n",tem);else printf("%d ",tem); s[re].pop(); } } return 0;}
- hdu 4393 Throw nails
- hdu 4393 Throw nails
- HDU 4393 Throw nails
- hdu 4393 Throw nails
- HDU 4393 Throw nails
- HDU 4393 Throw nails
- HDU 4393 Throw nails (STL)
- HDU 4393 Throw nails(技巧性模拟)
- HDU 4393 Throw nails (暴力加排序)
- hdu 4393 Throw nails 相同的状态做相同的处理 贪心
- Throw nails hdu多校联赛10 1004 水题
- HDOJ 4393 Throw nails —— 思维题
- hdu4393 Throw nails【优先队列&&贪心&&模拟】
- HUD4393 Throw nails(思维模拟)
- hdu 4573 Throw the Stones
- hdu4393Throw nails
- throw
- throw()
- 对待客户方交流方式的流程
- ANSI/UTF-8/UCS2(UTF-16),以及回车换行
- 《Lua程序设计[第二版]》第5,6章笔记
- 简单实例解读Java泛型
- 几个常用的控件TextView EditText Button MENU按钮
- hdu 4393 Throw nails
- ZOJ 1148
- 用python的twisted做个简单游戏服务器原形--客户端连接monitor管理类
- Extjs 让grid的CheckboxSelectionModel 判断是否全选,监听全选事件
- Useful WPF resources and learning materials
- 用python的twisted做个简单游戏服务器原形--客户端消息处理和重组类MessageQueue
- Linux ALSA声卡驱动之三:PCM设备的创建
- EventMachine简介
- 防火墙规则测试工具