POJ 1563

题意:蜗牛掉进高位H的井里,向外爬,初始高度为0,白天爬U*G,G为体力值(>=0),晚上掉下来D,初始体力值为100%,以后每爬一天减小P,其中,告诉H,U,D,P,求最后多少天爬出去或者再次掉下去。

题解:这题坑爹之处在于让人产生它很高端的误解,题目叙述说连续的爬行会减体力值,开始我还误以为休息一天又恢复了,然后可以安排什么时候休息使得爬出去时间最少= =!后来有以为蜗牛体力变成0后那天不爬,下一天又满状态复活了,于是WA就出现了。不过,题目貌似也没说体力将为0后蜗牛就放弃了啊~~~

View Code
 1 #include<cstdio>

 2 #include<cstring>

 3 #include<algorithm>

 4 using namespace std;

 5 const double eps=1e-8;

 6 int main()

 7 {

 8     int t;

 9     double now,h,u,d,p,g;

10     while(scanf("%lf%lf%lf%lf",&h,&u,&d,&p)!=EOF&&h>eps)

11     {

12         g=u;

13         p=u*p/100.0;

14         for(now=0.0,t=0;;t++)

15         {

16             if(now<-eps||now>h+eps)

17             {

18                 if(now<-eps)

19                     printf("failure on day %d\n",t);

20                 else

21                     printf("success on day %d\n",t);

22                 break;

23             }

24             if(g>-eps)

25             {

26                 now=now+g;

27                 g-=p;

28             }

29             if(now>h+eps)

30                 continue;

31             now-=d;

32         }

33     }

34     return 0;

35 }

你可能感兴趣的:(poj)