记录编号 |
28441 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2007]守望者的逃离 |
最终得分 |
100 |
用户昵称 |
Truth.Cirno |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.038 s |
提交时间 |
2011-10-14 18:25:10 |
内存使用 |
0.26 MiB |
显示代码纯文本
- //跑步速度,为17m/s,
- //闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点。
- //魔法值恢复的速度为4点/s,在原地休息状态时才能恢复。
- //允许刚好沉下,刚好脱离。(同一秒完成)
- //“脱离“定义:行进距离大于等于总距离长度
-
- #include <cstdio>
- using namespace std;
-
- int main(void)
- {
- freopen("escape.in","r",stdin);
- freopen("escape.out","w",stdout);
- int mp,maxdis,maxtim,disnow=0,timnow=0;
- bool done=false,escaped=false;
- scanf("%d %d %d",&mp,&maxdis,&maxtim);
- if (mp&1==1)
- mp--;
- while (!done)
- {
- if (mp>=10)
- {
- mp-=10;
- disnow+=60;
- timnow++;
- if (timnow==maxtim)
- done=true;
- if (disnow>=maxdis)
- {
- done=true;
- escaped=true;
- }
- }
- else
- break;
- }
- /*error under here*/
- /**/
- if (!done&&mp==4)
- {
- int tempdis,temptim;
- tempdis=disnow;
- temptim=timnow;
- tempdis+=17;
- temptim++;
- if (temptim==maxtim)
- {
- done=true;
- disnow=tempdis;
- timnow=temptim;
- }
- if (tempdis>=maxdis)
- {
- done=true;
- escaped=true;
- disnow=tempdis;
- timnow=temptim;
- }
- else if (!done)
- {
- tempdis+=17;
- temptim++;
- if (temptim==maxtim)
- {
- done=true;
- disnow=tempdis;
- timnow=temptim;
- }
- if (tempdis>=maxdis)
- {
- done=true;
- escaped=true;
- disnow=tempdis;
- timnow=temptim;
- }
- else if (!done)
- {
- disnow+=60;
- timnow+=3;
- if (timnow==maxtim)
- {
- done=true;
- }
- if (disnow>=maxdis)
- {
- done=true;
- escaped=true;
- }
- }
- }
- mp=2;
- }
- /**/
- if (!done&&mp==8)
- {
- int tempdis,temptim;
- tempdis=disnow;
- temptim=timnow;
- tempdis+=17;
- temptim++;
- if (temptim==maxtim)
- {
- done=true;
- disnow=tempdis;
- timnow=temptim;
- }
- if (tempdis>=maxdis)
- {
- done=true;
- escaped=true;
- disnow=tempdis;
- timnow=temptim;
- }
- else if (!done)
- {
- tempdis+=17;
- temptim++;
- if (temptim==maxtim)
- {
- done=true;
- disnow=tempdis;
- timnow=temptim;
- }
- if (tempdis>=maxdis)
- {
- done=true;
- escaped=true;
- disnow=tempdis;
- timnow=temptim;
- }
- else if (!done)
- {
- disnow+=60;
- timnow+=2;
- if (timnow==maxtim)
- {
- done=true;
- }
- if (disnow>=maxdis)
- {
- done=true;
- escaped=true;
- }
- }
- }
- mp=2;
- }
- /**/
- if (!done&&mp==2)
- {
- int tempdis,temptim;
- tempdis=disnow;
- temptim=timnow;
- tempdis+=17;
- temptim++;
- if (temptim==maxtim)
- {
- done=true;
- disnow=tempdis;
- timnow=temptim;
- }
- if (tempdis>=maxdis)
- {
- done=true;
- escaped=true;
- disnow=tempdis;
- timnow=temptim;
- }
- else if (!done)
- {
- tempdis+=17;
- temptim++;
- if (temptim==maxtim)
- {
- done=true;
- disnow=tempdis;
- timnow=temptim;
- }
- if (tempdis>=maxdis)
- {
- done=true;
- escaped=true;
- disnow=tempdis;
- timnow=temptim;
- }
- else if (!done)
- {
- disnow+=60;
- timnow+=3;
- if (timnow==maxtim)
- {
- done=true;
- }
- if (disnow>=maxdis)
- {
- done=true;
- escaped=true;
- }
- }
- }
- mp=0;
- }
- /**/
- /*error up to here*/
- if (!done&&mp==6)
- {
- int tempdis,temptim;
- tempdis=disnow;
- temptim=timnow;
- tempdis+=17;
- temptim++;
- if (temptim==maxtim)
- {
- done=true;
- disnow=tempdis;
- timnow=temptim;
- }
- if (tempdis>=maxdis)
- {
- done=true;
- escaped=true;
- disnow=tempdis;
- timnow=temptim;
- }
- else if (!done)
- {
- disnow+=60;
- timnow+=2;
- if (timnow==maxtim)
- done=true;
- if (disnow>=maxdis)
- {
- done=true;
- escaped=true;
- }
- }
- mp=0;
- }
- /**/
- while (!done)
- {
- int i,tempdis,temptim;
- tempdis=disnow;
- temptim=timnow;
- for (i=1;!done&&i<=7;i++)
- {
- tempdis+=17;
- temptim++;
- if (temptim==maxtim)
- {
- done=true;
- disnow=tempdis;
- timnow=temptim;
- }
- if (tempdis>=maxdis)
- {
- done=true;
- escaped=true;
- }
- }
- disnow=tempdis;
- timnow=temptim;
- if (i==8&&!escaped)
- {
- disnow++;
- if (disnow>=maxdis)
- {
- done=true;
- escaped=true;
- }
- }
- }
- if (escaped)
- printf("Yes\n%d\n",timnow);
- else
- printf("No\n%d\n",disnow);
- fclose(stdin);
- fclose(stdout);
- return(0);
- }