hdu 3744 A Runing Game
2016-05-08 14:11
330 查看
## A Runing Game ##
A Runing Game
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 917 Accepted Submission(s): 412
Problem Description
HDU hosts sporting meeting every year. One of the most exciting events is the 10000M-running.During the match many students are running on the track. So, how about the rank list now?
As we know, in a running , we rank the player according to the length everyone has passed . So if one player run 400M(one lap) farther than another player , it looks like they are running at the same position on the track , but the rank of the former is much better than the latter. Now given everyone’s position on the track , and one rank list , can you tell me whether the rank list is possible.
Input
The first line of input gives the number of cases, T (at most 110). the first line of each case has two intergers, n,m. (1 <= n <= 100,1 <= m <= 40000,n <= m),represents there’re n players in the m-meter running.
then n lines describe every player.
Each line have two intergers , Xi , Ri .Representing the i-th player is running at xi[0 , 399] meter in his recent lap, and ranks Ri in the ranklist .And the data make sure that no pair of the students have the same Xi or Ri. And the start point is at 0 in their first lap.
Output
If the rank list is possible, output “YES” ,output “NO” otherwise.
Sample Input
2
3 400
100 1
49 2
28 3
3 800
100 1
150 2
154 3
Sample Output
YES
NO
题目大意:T组数据,每组数据有参赛人数n和要跑多少米m的长度,然后n行两个数据a,b。a代表这个人距离起点的位置,b代表这个人的名次,问你这个名次有没有可能。
想法:创建一个数组,用下标表示名次,这样就可以省去排序的时间。如果前一名的位置在后一名的位置的前面,如果要排名是成立的,那么两个人可以在同一圈,就把这个人的位置加上他跑的最大圈数。如果前一名的位置在后一名的位置的后面,如果要排名成立,那么前一名一定要比后一名多跑一圈。所以前一名的跑步长度要比后一名的跑步长度多一圈,最后判断是不是所有的前一名跑步的长度都要比后一名的要长。
代码提交地址:http://acm.hdu.edu.cn/showproblem.php?pid=3744
A Runing Game
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 917 Accepted Submission(s): 412
Problem Description
HDU hosts sporting meeting every year. One of the most exciting events is the 10000M-running.During the match many students are running on the track. So, how about the rank list now?
As we know, in a running , we rank the player according to the length everyone has passed . So if one player run 400M(one lap) farther than another player , it looks like they are running at the same position on the track , but the rank of the former is much better than the latter. Now given everyone’s position on the track , and one rank list , can you tell me whether the rank list is possible.
Input
The first line of input gives the number of cases, T (at most 110). the first line of each case has two intergers, n,m. (1 <= n <= 100,1 <= m <= 40000,n <= m),represents there’re n players in the m-meter running.
then n lines describe every player.
Each line have two intergers , Xi , Ri .Representing the i-th player is running at xi[0 , 399] meter in his recent lap, and ranks Ri in the ranklist .And the data make sure that no pair of the students have the same Xi or Ri. And the start point is at 0 in their first lap.
Output
If the rank list is possible, output “YES” ,output “NO” otherwise.
Sample Input
2
3 400
100 1
49 2
28 3
3 800
100 1
150 2
154 3
Sample Output
YES
NO
题目大意:T组数据,每组数据有参赛人数n和要跑多少米m的长度,然后n行两个数据a,b。a代表这个人距离起点的位置,b代表这个人的名次,问你这个名次有没有可能。
想法:创建一个数组,用下标表示名次,这样就可以省去排序的时间。如果前一名的位置在后一名的位置的前面,如果要排名是成立的,那么两个人可以在同一圈,就把这个人的位置加上他跑的最大圈数。如果前一名的位置在后一名的位置的后面,如果要排名成立,那么前一名一定要比后一名多跑一圈。所以前一名的跑步长度要比后一名的跑步长度多一圈,最后判断是不是所有的前一名跑步的长度都要比后一名的要长。
#include<bits/stdc++.h> using namespace std; int a[101]; int main() { int t; cin>>t; while(t--) { memset(a,0,sizeof(a)); int n,m; cin>>n>>m; int x,y; for(int i=0;i<n;i++) { cin>>x>>y; a[y]=x; } int q=m/400,r=m%400; if(a[1]<=r) { a[1]=a[1]+q*400; } 4000 else { a[1]=a[1]+(q-1)*400; q--; } for(int i=2;i<=n;i++) { if((a[i]+q*400)<a[i-1]) { // q--; if(q<0) q=0; a[i]=a[i]+q*400; } else { q--; if(q<=0) q=0; a[i]=a[i]+q*400; } } int flag=0; for(int i=2;i<=n;i++) { if(a[i-1]>a[i]) continue; else { cout<<"NO"<<endl; flag=1; break; } } if(flag==0) cout<<"YES"<<endl; } return 0; }
代码提交地址:http://acm.hdu.edu.cn/showproblem.php?pid=3744
相关文章推荐
- Linux man手册使用指南
- ZOJ-3868-GCD Expectation(容斥)
- bzoj 3171(费用流)
- Android项目无法运行的解决方法
- facebook 15个你必须知道的开源项目
- leetcode 086 Partition List
- Vagrant搭建Ubuntu-JavaEE开发环境——Tomcat+JDK+MySQL+dubbo+测试
- Android 最火的快速开发框架androidannotations配置详解
- struts2进行多文件上传
- Python 迭代工具
- onmousedown,onmouseup,onclick同时应用于一个标签节点Element
- 我的目标
- 常用排序算法总结(三)
- linux curl命令详解
- java设计模式之模板模式
- Ext.grid.Panel中stateId的作用
- poj1068Parencodings
- HashMap实现原理分析
- Android Gradle Plugin指南(二)——基本项目
- java中的集合类(Collection)中的Set