首页 > ACM题库 > HDU-杭电 > hdu 4564 御剑术II待解决[解题报告]C++
2015
07-25

hdu 4564 御剑术II待解决[解题报告]C++

御剑术II

问题描述 :

在众多武侠类游戏中,都可以看到主角衣袂飘飘地在一旁通过“气”操控剑在空中飞行来杀伤敌人的帅气场景。

“十年磨一剑,霜刃未曾试”,在刻苦练习了不知道多少个日夜之后,今天你也掌握了这一项高超的武艺。虽然你可以并行地控制多柄剑同时飞行,但为了照顾普通群众的理解需求,暂时只考虑一把剑的情形。

所谓御剑术,实质上就是通过“气”来传递信息给已经通灵的剑,在这里,我们定义为瞬间给予剑一个设定好的速度。为了简化问题,将剑看作一个大小可以忽略的点,飞行在一个“二次元”――二维世界里,假设起点为原点(0,0)。需要注意的是,在这个世界中,剑依然会受到竖直向下的大小为g=9.8的重力加速度的影响。

现在由你来控制这个点,哦不,是剑,你已经掌握了N个命令,每个命令会瞬间清除剑的所有速度,然后给它一个固定的向量速度(V_xi, V_yi),分别表示水平速度与竖直速度,每个命令最多可发出一次。你的任务是,控制剑完成水平方向上长度为L的飞行,并使其完成飞行时的高度尽可能高,也就是,Y坐标值尽可能大。

经过一段时间的苦练,你对御剑术的掌握又精进了一些。你不需要在整数时刻时下达命令,但连续两个命令的下达时刻差不能小于1。同样的,仍然认为这里的所有速度与加速度都转化为标准值(比如,米和秒),你希望知道这个时候横向飞行距离固定时最高的飞行高度。

输入:

输入第一行为T,表示有T组测试数据。
每组数据以两个整数N,L开始,含义与描述对应。接下来的N行中,每行有两个整数,V_xi与V_yi。

[Technical Specification]

1. 1 <= T <= 447
2. 1 <= N <= 15
3. 1 <= L <= 100 000
4. 1 <= V_xi <=100 000
5. -100 000 <= V_yi <= 100 000

输出:

输入第一行为T,表示有T组测试数据。
每组数据以两个整数N,L开始,含义与描述对应。接下来的N行中,每行有两个整数,V_xi与V_yi。

[Technical Specification]

1. 1 <= T <= 447
2. 1 <= N <= 15
3. 1 <= L <= 100 000
4. 1 <= V_xi <=100 000
5. -100 000 <= V_yi <= 100 000

样例输入:

3
1 1
10 10
2 10
10 10
10 20
3 30
10 10
10 15
10 20

样例输出:

Case 1: 0.951
Case 2: 15.100
Case 3: 32.851

Hint
可以通过第三组样例看出,相比I,御剑技术已经提升了不少。