CF1209H.Moving Walkways

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Airports often use moving walkways to help you walking big distances faster. Each such walkway has some speed that effectively increases your speed. You can stand on such a walkway and let it move you, or you could also walk and then your effective speed is your walking speed plus walkway's speed.

Limak wants to get from point 00 to point LL on a straight line. There are nn disjoint walkways in between. The ii -th walkway is described by two integers xix_i and yiy_i and a real value sis_i . The ii -th walkway starts at xix_i , ends at yiy_i and has speed sis_i .

Every walkway is located inside the segment [0,L][0, L] and no two walkways have positive intersection. However, they can touch by endpoints.

Limak needs to decide how to distribute his energy. For example, it might make more sense to stand somewhere (or to walk slowly) to then have a lot of energy to walk faster.

Limak's initial energy is 00 and it must never drop below that value. At any moment, he can walk with any speed vv in the interval [0,2][0, 2] and it will cost him vv energy per second, but he continuously recovers energy with speed of 11 energy per second. So, when he walks with speed vv , his energy increases by (1v)(1-v) . Note that negative value would mean losing energy.

In particular, he can walk with speed 11 and this won't change his energy at all, while walking with speed 0.770.77 effectively gives him 0.230.23 energy per second.

Limak can choose his speed arbitrarily (any real value in interval [0,2][0, 2] ) at every moment of time (including the moments when he is located on non-integer positions). Everything is continuous (non-discrete).

What is the fastest time Limak can get from 00 to LL ?

输入格式

The first line contains integers nn and LL ( 1n2000001 \le n \le 200\,000 , 1L1091 \le L \le 10^9 ), the number of walkways and the distance to walk.

Each of the next nn lines contains integers xix_i , yiy_i and real value sis_i ( 0xi<yiL0 \le x_i < y_i \le L , 0.1si10.00.1 \le s_i \le 10.0 ). The value sis_i is given with at most 99 digits after decimal point.

It's guaranteed, that no two walkways have a positive intersection. The walkways are listed from left to right. That is, yixi+1y_i \le x_{i + 1} for 1in11 \le i \le n - 1 .

输出格式

Print one real value, the fastest possible time to reach LL . Your answer will be considered correct if its absolute or relative error won't exceed 10910^{-9} .

输入输出样例

  • 输入#1

    1 5
    0 2 2.0
    

    输出#1

    3.000000000000
    
  • 输入#2

    1 5
    2 4 0.91
    

    输出#2

    3.808900523560
    
  • 输入#3

    3 1000
    0 990 1.777777
    995 996 1.123456789
    996 1000 2.0
    

    输出#3

    361.568848429553
    

说明/提示

The drawings show the first two examples. In the first one, there is a walkway from 00 to 22 with speed 2.02.0 and Limak wants to get to point 55 . The second example has a walkway from 22 to 44 with speed 0.910.91 .

In the first example, one of optimal strategies is as follows.

  • Get from 00 to 22 by standing still on the walkway. It moves you with speed 22 so it takes 11 second and you save up 11 energy.
  • Get from 22 to 44 by walking with max speed 22 for next 11 second. It takes 11 second again and the energy drops to 00 .
  • Get from 44 to 55 by walking with speed 11 . It takes 11 second and the energy stays constant at the value 00 .

The total time is 1+1+1=31 + 1 + 1 = 3 .

首页