题目链接: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(贪心加模拟,追及问题)的更多相关文章

  1. HDU 4393 Throw nails

    Throw nails Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. hdu 4393 Throw nails(STL之优先队列)

    Problem Description The annual school bicycle contest started. ZL is a student in this school. He is ...

  3. HDU 4393 Throw nails(优先队列)

    优先队列的应用 好坑,好坑,好坑,重要的事情说三遍! #include<iostream> #include<cstdio> #include<cstring> # ...

  4. 【HDOJ】4393 Throw nails

    水题,优先级队列. /* 4393 */ #include <iostream> #include <sstream> #include <string> #inc ...

  5. hdu4393 Throw nails(只用模拟前面500来次,后面根据速度、位置、id值排序即可)

                                                                                                         ...

  6. HDU 4442 Physical Examination(贪心)

    HDU 4442 Physical Examination(贪心) 题目链接http://acm.split.hdu.edu.cn/showproblem.php?pid=4442 Descripti ...

  7. hdu 1598 (并查集加贪心) 速度与激情

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1598 一道带有贪心思想的并查集 所以说像二分,贪心这类基础的要掌握的很扎实才行. 用结构体数组储存公 ...

  8. HDU 5102 The K-th Distance(模拟)

    题意:输入一棵树,输出前k小的点对最短距离dis(i,j)的和. 模拟,官方题解说得很清楚了.不重复了. http://bestcoder.hdu.edu.cn/ 需要注意的是,复杂度要O(n+k), ...

  9. HDU 5835 Danganronpa (贪心)

    Danganronpa 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5835 Description Chisa Yukizome works as ...

随机推荐

  1. SQL 不同服务器数据库操作

    https://www.cnblogs.com/lusunqing/p/3660190.html --创建远程链接服务器 execute sys.sp_addlinkedserver @server= ...

  2. centos从安装到环境配置

    1.安装centos6.5    http://jingyan.baidu.com/article/25648fc1a235c99191fd0008.html 2.配置网络ip   http://ji ...

  3. .netcore项目中使用log4net

    log4net配置文件 引入log4net包,创建一个config目录,专门用来放配置文件,添加log4net.config文件. 编写配置文件. <?xml version="1.0 ...

  4. ubuntu14.04 caffe

    1.显卡驱动 ubuntu nvidia 940m 使用sudo ubuntu-drivers devices 查看推荐的驱动版本 //sudo add-apt-repository ppa:mama ...

  5. c++-01--迭代器

    迭代器的概念 除了在其它语言中司空见惯的下标法访问容器元素之外,C++ 语言提供了一种全新的方法——迭代器(iterator)来访问容器的元素.迭代器其实类似于引用,指向容器中某一元素.迭代器(ite ...

  6. 创建多线程时,为何创建后需要Sleep?

    后面的线程用到了前面线程初始的结构,sleep一下只是做到了使前一个线程初始化完成后后一个线程才开始运行.但这样不严格,需要同步机制.在么多个线程都要用的数据结构不要放到子线程内部去初始化,程序启动时 ...

  7. SAP WebIDE里UI5应用的隐藏文件project.json

    在SAP WebIDE UI5应用编辑器里的菜单View->Show Hidden files点击后,即可发现项目文件夹下有一个隐藏文件project.json: 内容如下: 这也解释了为什么b ...

  8. RabbitMQ中初始化ConnectionFactory常用设置属性

    初始化ConnectionFactory 代码 ConnectionFactory factory = new ConnectionFactory(); factory.setHost(ip); fa ...

  9. 1249: 人见人爱A^B

    题目描述 求A^B的最后三位数表示的整数. 说明:A^B的含义是“A的B次方”  输入 输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果 ...

  10. Mongo db 简单介绍及命令笔记

    首先来了解下什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为W ...