题意:蜗牛掉进高位H的井里,向外爬,初始高度为0,白天爬U*G,G为体力值(>=0),晚上掉下来D,初始体力值为100%,以后每爬一天减小P,其中,告诉H,U,D,P,求最后多少天爬出去或者再次掉下去。
题解:这题坑爹之处在于让人产生它很高端的误解,题目叙述说连续的爬行会减体力值,开始我还误以为休息一天又恢复了,然后可以安排什么时候休息使得爬出去时间最少= =!后来有以为蜗牛体力变成0后那天不爬,下一天又满状态复活了,于是WA就出现了。不过,题目貌似也没说体力将为0后蜗牛就放弃了啊~~~
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }