Title Link: http://acm.hdu.edu.cn/showproblem.php?pid=2059
Problem description said in a long long time ago, poor rabbit experienced the biggest blow in life-the race lost to the turtle, heart depressed, vowed to avenge, so hid in the Hangzhou Xiasha Agricultural Park hardships painstaking cultivation, and finally practiced into a stunt, can not rest to a constant speed (VR/m) keeps running. The rabbit has been trying to find a chance to teach the turtle a shame before the snow.
Recently, HDU held the 50 anniversary celebration, the society's major celebrities gathered under the sand, the rabbit took the opportunity to challenge the turtle. Although the tortoise knew that the victory hope is not big, but under the pressure of public opinion, can accept the challenge.
The game is set on a straight road, the length of l meters, the rules are simple, who first reached the end of the victory.
Helpless turtle since the last victory, became a famous turtle, by some gossip magazine called "Animal Kingdom Liu Xiang", advertising constantly, at hand also has a lot of savings. In order to win the rabbit again, the turtle spent the most money to buy the most advanced weapons-"small Flying pigeon" brand electric vehicles. This car in the case of electricity can be VT1 m/s Speed "flying", but unfortunately the battery capacity is limited, each full of electricity can only travel the distance of C meters, after the foot to pedal, the turtle with the pedal speed of VT2 m/s. What's more, the turtle actually built many (n) power stations on the runway for the electric car to recharge. Where each charge takes a T-second time. Of course, turtles can choose to go or not recharge when they pass a charging station.
The game began immediately, and the hare and the tortoise with the electric electric car were standing at the starting line. Your task is to write a program, judge the turtle with the best plan to March, can win the constant speed of running rabbits.
Input This topic contains multiple sets of tests, please handle to the end of the file. Each test consists of four rows:
The first line is a whole number L represents the total length of the runway
The second line contains three integer n,c,t, which indicates the number of charging stations, the distance the electric vehicle can travel after it has been flushed, and the time it takes to recharge each charge.
The third line is also three integer vr,vt1,vt2, respectively, indicating the speed of the rabbit running, turtle driving the speed of electric cars, turtle pedal electric car speed
The four lines contain N (n<=100) integer p1,p2...pn, respectively, representing the distance from the starting point of each charging station, where 0<p1<p2<...<pn<l
Each of these numbers is within the 32-bit integer range.
Output when a turtle is likely to win, export a line of "What a pity rabbit!". Otherwise the output line "good job,rabbit!";
The problem data ensures that turtles and rabbits do not arrive at the same time.
Sample Input1003 20 55 8 210 40 601003 60 55 8 210 40 60
Sample Outputgood job,rabbit! What a pity rabbit!Thinking of solving problems Typical dynamic planning, the turtle when the main time to arrive at the charging station when the charge is related, so use dp[i] to arrive at the first charging station of the minimum time, but also can start and end as a charging station, with Dp[0],dp[n + 1], so that the state transfer formula Dp[i] = min ( Dp[k] + tk), K < I,TK indicates the time to reach I station from the full power of K station, special dp[0] =-T. Dp[n + 1] is the turtle's optimal strategy, the code is as follows:
#include <iostream>#include<cstring>#include<cmath>#include<string>#include<algorithm>using namespacestd;intMain () {Ios::sync_with_stdio (false ); intN; DoubleL, C, T, VR, VT1, VT2, dis[ the], dp[ the], mint; while(CIN >> l >> n >> C >> t >> VR >> VT1 >>vt2) { for(inti =1; I <= N; i++) Cin>>Dis[i]; dis[0] =0; Dis[n+1] =l; dp[0] = -T; for(inti =1; I <= n +1; i++) {Mint=0x3f3f3f3f; for(intj =0; J < I; J + + ){ if(Dis[i]-dis[j] <=c) Dp[i]= Dp[j] + t + (Dis[i]-dis[j])/VT1; ElseDp[i] = Dp[j] + t + c/vt1 + (Dis[i]-dis[j]-c)/vt2; Mint=min (mint, dp[i]); } Dp[i]=Mint; } if(dp[n +1] <= l/vr) cout <<"What a pity rabbit!\n"; Elsecout <<"Good job,rabbit!\n"; } return 0;}
HDU-2059 Turtle and Rabbit Race (DP)