hdu4393 Throw nails(只用模拟前面500来次,后面根据速度、位置、id值排序即可)
Input
Huge input, scanf is recommended.
Output
Sample Input
Sample Output
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<iterator>
#include<utility>
#include<sstream>
#include<iostream>
#include<cmath>
#include<stack>
using namespace std;
const int INF=1000000007;
const double eps=0.00000001;
const int maxn=50005;
int loc[maxn],speed[maxn];
int sum[maxn];
bool vis[maxn];
struct node
{
int now,s,id;
node(int now=0,int s=0,int id=0):now(now),s(s),id(id){}
bool operator < (const node& t) const
{
if(s!=t.s) return s>t.s; //比较速度
if(now!=t.now) return now>t.now; //当前位置
return id<t.id; //id
}
};
vector<node> save;
int main()
{
int T,Case=0;
cin>>T;
while(T--)
{
int N;
cin>>N; for(int i=1;i<=N;i++)
{
scanf("%d%d",&loc[i],&speed[i]);
sum[i]=loc[i]-speed[i]; //由于起始也要淘汰一名选手,所以先减掉,到后面开始模拟时加上即可
}
printf("Case #%d:\n",++Case);
memset(vis,false,sizeof(vis));
int kase=0; //方便打印加的一个标记
for(int i=1;i<=min(N,550);i++) //N可能比550小
{
int choose=-1,Max=-INF;
for(int j=1;j<=N;j++)
{
if(vis[j]) continue;
sum[j]+=speed[j];
if(Max<sum[j]) Max=sum[j],choose=j;
}
vis[choose]=true;
if(kase++) printf(" ");
printf("%d",choose);
}
save.clear();
for(int i=1;i<=N;i++) if(!vis[i]) save.push_back(node(sum[i],speed[i],i)); // 剩余的选手
sort(save.begin(),save.end());
for(int i=0;i<save.size();i++)
{
if(kase++) printf(" ");
printf("%d",save[i].id);
}
printf("\n");
}
return 0;
}
hdu4393 Throw nails(只用模拟前面500来次,后面根据速度、位置、id值排序即可)的更多相关文章
- HDU 4393 Throw nails
Throw nails Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 刷题总结——Throw nails(hdu4393)
题目: Problem Description The annual school bicycle contest started. ZL is a student in this school. H ...
- HDU 4393 Throw nails(贪心加模拟,追及问题)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=115361#problem/D 题意大致是:给出最多50000个人,拥有最初速度 ...
- G - Throw nails
来源hde4393 The annual school bicycle contest started. ZL is a student in this school. He is so boring ...
- hdu 4393 Throw nails(STL之优先队列)
Problem Description The annual school bicycle contest started. ZL is a student in this school. He is ...
- 【HDOJ】4393 Throw nails
水题,优先级队列. /* 4393 */ #include <iostream> #include <sstream> #include <string> #inc ...
- HDU 4393 Throw nails(优先队列)
优先队列的应用 好坑,好坑,好坑,重要的事情说三遍! #include<iostream> #include<cstdio> #include<cstring> # ...
- 在线判题 (模拟)http://202.196.1.132/problem.php?id=1164
#include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> #de ...
- 【noip模拟赛4】找啊找啊找BF 拓扑排序
描述 sqybi上次找GF的工作十分不成功,于是依旧单身的他在光棍节前的某天突发奇想,要给自己找一个BF(这里指的是男性的好朋友……),这样既可以和人分享内心的压抑(路人甲:压抑还分享么……),也可以 ...
随机推荐
- repter导出到Excel
; , * ); sheet1.SetColumnWidth(, * ); sheet1.SetC ...
- c语言所有的errno枚举值含义
可以通过以下代码,获取所有的错误码信息: #include <string.h> /* for strerror */ #include <errno.h> #include ...
- 04747_Java语言程序设计(一)_第10章_网络与数据库编程基础
例10.1说明InetAddress类的用法的应用程序. public class Example10_1 { public static void main(String args[]) { try ...
- The kth great number(set)
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表)
Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==== ...
- 使用Xshell连接Ubuntu
使用Xshell连接Ubuntu Xshell是一个安全终端模拟软件,可以进行远程登录.我使用XShell的主要目的是在Windows环境下登录Linux终端进行编码,非常方便.本文简单介绍下它的使用 ...
- 伪元素first-letter(首字母变大)
让首字母变大 <p>Do you like to ride a bicycle?</p> p:first-letter{ font-size: 34px; }
- Highcharts属性
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- [转]eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法
原网址 : http://www.cnblogs.com/zdz8207/archive/2012/11/30/eclipse-android-adt-update.html 网上解决方法主要有这几种 ...
- keycode(来自互联网)