HDU 4393 Throw nails(贪心加模拟,追及问题)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=115361#problem/D
题意大致是:给出最多50000个人,拥有最初速度F和1秒后的速度V,(F<=500,V<=100)每秒将速度最快的那个人淘汰,按淘汰的人的顺序输出他们的序号。
思路:由于人数很多,用暴力更新每秒淘汰的人显然会TLE。注意到F很小,那么对于任意两个人来说,即使有500的路程差,速度快的那个人哪怕是每秒只快1米,在501秒后就能超越,也就是说,501秒以后速度越快的人就一直处于快的地位,速度一样的人,F大的先被淘汰,再一样,按照序号小的先淘汰即可;那么在501秒以后只要按照这个方法排一个序即可。而对于501秒以内的,只要暴力模拟每秒淘汰最快的即可。
当然,这是按照F范围小赖考虑的,V范围小的方法还不会- -,,下次会了再补上。
下面给出AC代码:
#include <stdio.h>
#include <algorithm>
#include <set>
#include <string.h>
using namespace std;
struct node
{
int id;
int v;
int f;
int s;
}P[+];
int tot;
bool cmp(node A,node B)
{
if(A.v==B.v)
{
if(A.f==B.f)
{
return A.id<B.id;
}
else return A.f>B.f;
}
else return A.v>B.v;
} int main()
{
int T;
scanf("%d",&T);
for(int kace=;kace<=T;kace++)
{
tot=;
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
int f,v;
scanf("%d%d",&f,&v);
P[++tot]=(node){i,v,f,f};
}
printf("Case #%d:\n",kace);
for(int i=;i<=;i++)
{
if(i>n) break;
int id=;
int maxsum=-;
for(int j=;j<=tot;j++)
{
if(i!=&&P[j].s!=-) P[j].s+=P[j].v;
if(maxsum<P[j].s) {id=P[j].id;maxsum=P[j].s;}
}
if(i!=) printf(" ");
printf("%d",id);
P[id].s=P[id].f=P[id].v=-;
}
sort(P+,P++tot,cmp);
for(int i=;i<=n-;i++)
{
printf(" %d",P[i].id);
}
puts("");
}
return ;
}
HDU 4393 Throw nails(贪心加模拟,追及问题)的更多相关文章
- HDU 4393 Throw nails
Throw nails Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 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> # ...
- 【HDOJ】4393 Throw nails
水题,优先级队列. /* 4393 */ #include <iostream> #include <sstream> #include <string> #inc ...
- hdu4393 Throw nails(只用模拟前面500来次,后面根据速度、位置、id值排序即可)
...
- HDU 4442 Physical Examination(贪心)
HDU 4442 Physical Examination(贪心) 题目链接http://acm.split.hdu.edu.cn/showproblem.php?pid=4442 Descripti ...
- hdu 1598 (并查集加贪心) 速度与激情
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1598 一道带有贪心思想的并查集 所以说像二分,贪心这类基础的要掌握的很扎实才行. 用结构体数组储存公 ...
- HDU 5102 The K-th Distance(模拟)
题意:输入一棵树,输出前k小的点对最短距离dis(i,j)的和. 模拟,官方题解说得很清楚了.不重复了. http://bestcoder.hdu.edu.cn/ 需要注意的是,复杂度要O(n+k), ...
- HDU 5835 Danganronpa (贪心)
Danganronpa 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5835 Description Chisa Yukizome works as ...
随机推荐
- js监听audio播放完毕
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 2 vue学习
1 vue的核心是数据与视图的双向绑定 2 当viewmodel销毁时,所有的事件处理器都会自动删除,无需自己清理 3 v-model的修饰符解释 .lazy :失去焦点或者按回车键时触发同步 .nu ...
- FlowPortal BPM流程中调用封装好的API如何调试
遇到复杂一点的业务,我们常常都会将业务逻辑封装到一个dll中,在流程中调用封装好的API. 业务逻辑库封装到企业库后,是可以在Visual Studio中调试库的哦. [附加到进程] [流程中调用AP ...
- CAS客户端认证流程
CAS登陆流程 Step 1:浏览器向CAS客户端发起登陆请求,CAS客户端生成“登陆URL”,并把浏览器重定向到该URL 登陆URL: https://${cas-server-host}:${ca ...
- JAVA中对象的克隆及深拷贝和浅拷贝
使用场景: 在日常的编程过程 中,经常会遇到,有一个对象OA,在某一时间点OA中已经包含了一些有效值 ,此时可能会需一个和OA完全相对的新对象OB,并且要在后面的操作中对OB的任何改动都不会影响到OA ...
- linux centos安装nginx1.7.4
原文转自 jerryhe326:https://www.cnblogs.com/jerrypro/p/7062101.html一.安装准备 首先由于nginx的一些模块依赖一些lib库,所以在安装ng ...
- CodeForces 822C Hacker, pack your bags!
题意 给出一些闭区间(始末+代价),选取两段不重合区间使长度之和恰为x且代价最低 思路 相同持续时间的放在一个vector中,内部再对起始时间排序,从后向前扫获取对应起始时间的最优代价,存在minn中 ...
- JavaScript展开操作符(Spread operator)介绍
本文介绍JavaScript的展开操作符(Spread operator)....本文适合ES6初学者. 你可以通过展开操作符(Spread operator)...扩展一个数组对象和字符串.展开运算 ...
- Selenium(三)webdriver的API与定位元素
在学习定位元素之前,应该要学会: 1.打开浏览器 2.打开网页 3.定位元素及操作 ①定位元素 可只此输入框的id是kw,name是wd,class是s_ipt ②在python编辑器中找到该元素 通 ...
- Python3基础学习-while循环实例- 猜数字游戏
需求: 猜数字游戏, 要求如下: 给个数字, 比如是66. 让用户一直猜,直到猜对退出. 中间输入q或Q也能退出 如果猜大了,提示用户猜小一点; 如果猜小了,提示用户猜大一点; likely = 66 ...