记录编号 28441 评测结果 AAAAAAAAAA
题目名称 [NOIP 2007]守望者的逃离 最终得分 100
用户昵称 GravatarTruth.Cirno 是否通过 通过
代码语言 C++ 运行时间 0.038 s
提交时间 2011-10-14 18:25:10 内存使用 0.26 MiB
显示代码纯文本
  1. //跑步速度,为17m/s,
  2. //闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点。
  3. //魔法值恢复的速度为4点/s,在原地休息状态时才能恢复。
  4. //允许刚好沉下,刚好脱离。(同一秒完成)
  5. //“脱离“定义:行进距离大于等于总距离长度
  6.  
  7. #include <cstdio>
  8. using namespace std;
  9.  
  10. int main(void)
  11. {
  12. freopen("escape.in","r",stdin);
  13. freopen("escape.out","w",stdout);
  14. int mp,maxdis,maxtim,disnow=0,timnow=0;
  15. bool done=false,escaped=false;
  16. scanf("%d %d %d",&mp,&maxdis,&maxtim);
  17. if (mp&1==1)
  18. mp--;
  19. while (!done)
  20. {
  21. if (mp>=10)
  22. {
  23. mp-=10;
  24. disnow+=60;
  25. timnow++;
  26. if (timnow==maxtim)
  27. done=true;
  28. if (disnow>=maxdis)
  29. {
  30. done=true;
  31. escaped=true;
  32. }
  33. }
  34. else
  35. break;
  36. }
  37. /*error under here*/
  38. /**/
  39. if (!done&&mp==4)
  40. {
  41. int tempdis,temptim;
  42. tempdis=disnow;
  43. temptim=timnow;
  44. tempdis+=17;
  45. temptim++;
  46. if (temptim==maxtim)
  47. {
  48. done=true;
  49. disnow=tempdis;
  50. timnow=temptim;
  51. }
  52. if (tempdis>=maxdis)
  53. {
  54. done=true;
  55. escaped=true;
  56. disnow=tempdis;
  57. timnow=temptim;
  58. }
  59. else if (!done)
  60. {
  61. tempdis+=17;
  62. temptim++;
  63. if (temptim==maxtim)
  64. {
  65. done=true;
  66. disnow=tempdis;
  67. timnow=temptim;
  68. }
  69. if (tempdis>=maxdis)
  70. {
  71. done=true;
  72. escaped=true;
  73. disnow=tempdis;
  74. timnow=temptim;
  75. }
  76. else if (!done)
  77. {
  78. disnow+=60;
  79. timnow+=3;
  80. if (timnow==maxtim)
  81. {
  82. done=true;
  83. }
  84. if (disnow>=maxdis)
  85. {
  86. done=true;
  87. escaped=true;
  88. }
  89. }
  90. }
  91. mp=2;
  92. }
  93. /**/
  94. if (!done&&mp==8)
  95. {
  96. int tempdis,temptim;
  97. tempdis=disnow;
  98. temptim=timnow;
  99. tempdis+=17;
  100. temptim++;
  101. if (temptim==maxtim)
  102. {
  103. done=true;
  104. disnow=tempdis;
  105. timnow=temptim;
  106. }
  107. if (tempdis>=maxdis)
  108. {
  109. done=true;
  110. escaped=true;
  111. disnow=tempdis;
  112. timnow=temptim;
  113. }
  114. else if (!done)
  115. {
  116. tempdis+=17;
  117. temptim++;
  118. if (temptim==maxtim)
  119. {
  120. done=true;
  121. disnow=tempdis;
  122. timnow=temptim;
  123. }
  124. if (tempdis>=maxdis)
  125. {
  126. done=true;
  127. escaped=true;
  128. disnow=tempdis;
  129. timnow=temptim;
  130. }
  131. else if (!done)
  132. {
  133. disnow+=60;
  134. timnow+=2;
  135. if (timnow==maxtim)
  136. {
  137. done=true;
  138. }
  139. if (disnow>=maxdis)
  140. {
  141. done=true;
  142. escaped=true;
  143. }
  144. }
  145. }
  146. mp=2;
  147. }
  148. /**/
  149. if (!done&&mp==2)
  150. {
  151. int tempdis,temptim;
  152. tempdis=disnow;
  153. temptim=timnow;
  154. tempdis+=17;
  155. temptim++;
  156. if (temptim==maxtim)
  157. {
  158. done=true;
  159. disnow=tempdis;
  160. timnow=temptim;
  161. }
  162. if (tempdis>=maxdis)
  163. {
  164. done=true;
  165. escaped=true;
  166. disnow=tempdis;
  167. timnow=temptim;
  168. }
  169. else if (!done)
  170. {
  171. tempdis+=17;
  172. temptim++;
  173. if (temptim==maxtim)
  174. {
  175. done=true;
  176. disnow=tempdis;
  177. timnow=temptim;
  178. }
  179. if (tempdis>=maxdis)
  180. {
  181. done=true;
  182. escaped=true;
  183. disnow=tempdis;
  184. timnow=temptim;
  185. }
  186. else if (!done)
  187. {
  188. disnow+=60;
  189. timnow+=3;
  190. if (timnow==maxtim)
  191. {
  192. done=true;
  193. }
  194. if (disnow>=maxdis)
  195. {
  196. done=true;
  197. escaped=true;
  198. }
  199. }
  200. }
  201. mp=0;
  202. }
  203. /**/
  204. /*error up to here*/
  205. if (!done&&mp==6)
  206. {
  207. int tempdis,temptim;
  208. tempdis=disnow;
  209. temptim=timnow;
  210. tempdis+=17;
  211. temptim++;
  212. if (temptim==maxtim)
  213. {
  214. done=true;
  215. disnow=tempdis;
  216. timnow=temptim;
  217. }
  218. if (tempdis>=maxdis)
  219. {
  220. done=true;
  221. escaped=true;
  222. disnow=tempdis;
  223. timnow=temptim;
  224. }
  225. else if (!done)
  226. {
  227. disnow+=60;
  228. timnow+=2;
  229. if (timnow==maxtim)
  230. done=true;
  231. if (disnow>=maxdis)
  232. {
  233. done=true;
  234. escaped=true;
  235. }
  236. }
  237. mp=0;
  238. }
  239. /**/
  240. while (!done)
  241. {
  242. int i,tempdis,temptim;
  243. tempdis=disnow;
  244. temptim=timnow;
  245. for (i=1;!done&&i<=7;i++)
  246. {
  247. tempdis+=17;
  248. temptim++;
  249. if (temptim==maxtim)
  250. {
  251. done=true;
  252. disnow=tempdis;
  253. timnow=temptim;
  254. }
  255. if (tempdis>=maxdis)
  256. {
  257. done=true;
  258. escaped=true;
  259. }
  260. }
  261. disnow=tempdis;
  262. timnow=temptim;
  263. if (i==8&&!escaped)
  264. {
  265. disnow++;
  266. if (disnow>=maxdis)
  267. {
  268. done=true;
  269. escaped=true;
  270. }
  271. }
  272. }
  273. if (escaped)
  274. printf("Yes\n%d\n",timnow);
  275. else
  276. printf("No\n%d\n",disnow);
  277. fclose(stdin);
  278. fclose(stdout);
  279. return(0);
  280. }