Osu!

Problem Description
Osu! is a very popular music game. Basically, it is a game about clicking. Some points will appear on the screen at some time, and you have to click them at a correct time.






Now, you want to write an algorithm to estimate how diffecult a game is.



To simplify the things, in a game consisting of N points, point i will occur at time ti at place (xi, yi), and you should click it exactly at ti at (xi, yi). That means you should move your cursor
from point i to point i+1. This movement is called a jump, and the difficulty of a jump is just the distance between point i and point i+1 divided by the time between ti and ti+1. And the difficulty of a game is simply the difficulty
of the most difficult jump in the game.



Now, given a description of a game, please calculate its difficulty.
 
Input
The first line contains an integer T (T ≤ 10), denoting the number of the test cases.



For each test case, the first line contains an integer N (2 ≤ N ≤ 1000) denoting the number of the points in the game.  Then N lines follow, the i-th line consisting of 3 space-separated integers, ti(0 ≤ ti < ti+1 ≤ 106),
xi, and yi (0 ≤ xi, yi ≤ 106) as mentioned above.
 
Output
For each test case, output the answer in one line.



Your answer will be considered correct if and only if its absolute or relative error is less than 1e-9.
 
Sample Input
2
5
2 1 9
3 7 2
5 9 0
6 6 3
7 6 0
10
11 35 67
23 2 29
29 58 22
30 67 69
36 56 93
62 42 11
67 73 29
68 19 21
72 37 84
82 24 98
 
Sample Output
9.2195444573
54.5893762558
Hint
In memory of the best osu! player ever Cookiezi.
 
Source

解题思路:

水题,看懂题意,写代码就没问题。

代码:

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <cmath>
#include <iomanip>
#include <vector>
#include <map>
#include <stack>
#include <queue>
using namespace std;
int n; struct Point
{
int x,y,t;
}point[1002]; double dis(Point a,Point b)
{
return sqrt((double)(a.x-b.x)*(a.x-b.x)+(double)(a.y-b.y)*(a.y-b.y));
} int main()
{
int t;cin>>t;
while(t--)
{
cin>>n;
cin>>point[1].t>>point[1].x>>point[1].y;
double ans=-1;
for(int i=2;i<=n;i++)
{
cin>>point[i].t>>point[i].x>>point[i].y;
double temp=dis(point[i],point[i-1])/(point[i].t-point[i-1].t);
if(ans<temp)
ans=temp;
}
cout<<setiosflags(ios::fixed)<<setprecision(9)<<ans<<endl;
}
return 0;
}

最新文章

  1. PHP+MySQL代码部署在Linux(Ubuntu)上注意事项
  2. mpp文件转换成jpg图片,可以用pdf文件做中转站
  3. CentOS 网卡配置bond4(LACP)
  4. 会动的大风车(css3)
  5. omnetpp inet
  6. IntelliJ IDEA中怎么查看文件中所有方法?
  7. robots.txt文件配置和使用方法详解
  8. ActiveMQ之消息指针
  9. @ContextConfiguration注解说明
  10. 【转】 iOS开发UI篇—控制器的View的创建
  11. HDU 4914 Linear recursive sequence(矩阵乘法递推的优化)
  12. 介绍一个开源的在线管理SQLServer的小工具--SQLEntMan
  13. HNOI2017 滚粗记
  14. [js插件开发教程]一步步开发一个可以定制配置的隔行变色小插件
  15. 初识.Net IL
  16. 读取导入csv csv报错iterable expected, not float
  17. C语言之运算符、表达式和语句
  18. Centos7配置静态IP后无法ping通外部网络的问题(无法上网)
  19. jQuery表格列宽可变,兼容firfox
  20. 构建NDK交叉编译链

热门文章

  1. TCP/IP、Http、Socket 简单理解
  2. 史上最全的web前端开发程序员学习清单!
  3. api访问参数
  4. (2).net web api 请求方式与参数
  5. HashSet底层存储元素的源码分析
  6. Wannafly挑战赛22 A-计数器(gcd,裴蜀定理)
  7. Codeforces 1027F. Session in BSU
  8. Codeforces 920 E Connected Components?
  9. 所有iOS设备的屏幕分辨率
  10. 如何隐藏 Safari 中 input 标签的 autofill 图标