洛谷 P1941 飞扬的小鸟

原题链接

首先吐槽几句

noip都快到了,我还不刷起联赛大水题!

题目描述

Flappy Bird 是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败。

为了简化问题,我们对游戏规则进行了简化和改编:

游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度)。

小鸟始终在游戏界面内移动。小鸟从游戏界面最左边任意整数高度位置出发,到达游戏界面最右边时,游戏完成。

小鸟每个单位时间沿横坐标方向右移的距离为1 ,竖直移动的距离由玩家控制。如果点击屏幕,小鸟就会上升一定高度X ,每个单位时间可以点击多次,效果叠加;

如果不点击屏幕,小鸟就会下降一定高度Y 。小鸟位于横坐标方向不同位置时,上升的高度X 和下降的高度Y 可能互不相同。

小鸟高度等于0 或者小鸟碰到管道时,游戏失败。小鸟高度为 m 时,无法再上升。

现在,请你判断是否可以完成游戏。如果可以 ,输出最少点击屏幕数;否则,输出小鸟最多可以通过多少个管道缝隙。

输入输出格式

输入格式:

输入文件名为 bird.in 。

第1 行有3 个整数n ,m ,k ,分别表示游戏界面的长度,高度和水管的数量,每两个

整数之间用一个空格隔开;

接下来的n 行,每行2 个用一个空格隔开的整数X 和Y ,依次表示在横坐标位置0 ~n- 1

上玩家点击屏幕后,小鸟在下一位置上升的高度X ,以及在这个位置上玩家不点击屏幕时,

小鸟在下一位置下降的高度Y 。

接下来k 行,每行3 个整数P ,L ,H ,每两个整数之间用一个空格隔开。每行表示一

个管道,其中P 表示管道的横坐标,L 表示此管道缝隙的下边沿高度为L ,H 表示管道缝隙

上边沿的高度(输入数据保证P 各不相同,但不保证按照大小顺序给出)。

输出格式:

输出文件名为bird.out 。

共两行。

第一行,包含一个整数,如果可以成功完成游戏,则输出1 ,否则输出0 。

第二行,包含一个整数,如果第一行为1 ,则输出成功完成游戏需要最少点击屏幕数,否则,输出小鸟最多可以通过多少个管道缝隙。

输入输出样例

输入样例#1:

  1. 10 10 6
  2. 3 9
  3. 9 9
  4. 1 2
  5. 1 3
  6. 1 2
  7. 1 1
  8. 2 1
  9. 2 1
  10. 1 6
  11. 2 2
  12. 1 2 7
  13. 5 1 5
  14. 6 3 5
  15. 7 5 8
  16. 8 7 9
  17. 9 1 3

输出样例#1:

  1. 1
  2. 6

输入样例#2:

  1. 10 10 4
  2. 1 2
  3. 3 1
  4. 2 2
  5. 1 8
  6. 1 8
  7. 3 2
  8. 2 1
  9. 2 1
  10. 2 2
  11. 1 2
  12. 1 0 2
  13. 6 7 9
  14. 9 1 4
  15. 3 8 10

输出样例#2:

  1. 0
  2. 3

【输入输出样例说明】

自己去看题。。。

【数据范围】

对于30% 的数据:5 ≤ n ≤ 10,5 ≤ m ≤ 10,k = 0 ,保证存在一组最优解使得同一单位时间最多点击屏幕3 次;

对于50% 的数据:5 ≤ n ≤ 2 0 ,5 ≤ m ≤ 10,保证存在一组最优解使得同一单位时间最多点击屏幕3 次;

对于70% 的数据:5 ≤ n ≤ 1000,5 ≤ m ≤ 1 0 0 ;

对于100%的数据:5 ≤ n ≤ 100 0 0 ,5 ≤ m ≤ 1 0 00,0 ≤ k < n ,0<X < m ,0<Y <m,0<P <n,0 ≤ L < H ≤ m ,L +1< H 。

题解、我自己的思路

50分算法

f[i][j]表示在距离最左边i个单位,高j的最少点击次数。

容易想到

\[f[i][j]+k->f[i+1][max(m,j+k*x[i])] (k=1...m)……1
\]

\[f[i][j]->f[i+1][j-y[i]]……2
\]

再判断一下越界、特判一下k再加会不会产生贡献,即可获得50分。

AC算法

上面1式看做完全背包,2式看做01背包求解。

我傻啦

增加一个g,专门用于完全背包的转移。

AC

Code

  1. // It is made by XZZ
  2. #include<cstdio>
  3. #include<algorithm>
  4. #define Fname "birda"
  5. using namespace std;
  6. #define rep(a,b,c) for(rg int a=b;a<=c;a++)
  7. #define drep(a,b,c) for(rg int a=b;a>=c;a--)
  8. #define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
  9. #define il inline
  10. #define rg register
  11. #define vd void
  12. typedef long long ll;
  13. il int gi(){
  14. rg int x=0,f=1;rg char ch=getchar();
  15. while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
  16. while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
  17. return x*f;
  18. }
  19. il vd Min(int&a,int b){a=min(a,b);}
  20. int f[2][1010],g[2][1010],l[10001],r[10001];
  21. int x[10001],y[10001];
  22. int main(){
  23. int n=gi(),m=gi(),kk=gi(),p;
  24. rep(i,0,n-1)x[i]=gi(),y[i]=gi();
  25. rep(i,0,n)l[i]=0,r[i]=m+1;
  26. rep(i,1,kk)p=gi(),l[p]=gi(),r[p]=gi();
  27. int now=0,minn,res=0;
  28. rep(i,0,n-1){
  29. rep(j,1,m)f[now^1][j]=g[now^1][j]=1e9;
  30. minn=1e9;
  31. rep(j,1,l[i])f[now][j]=1e9;
  32. rep(j,r[i],m)f[now][j]=1e9;
  33. rep(j,1,m)g[now][j]=1e9;
  34. rep(j,1,m){
  35. minn=min(minn,f[now][j]);
  36. Min(g[now][j],f[now][j]);
  37. if(j!=m)Min(g[now][min(m,j+x[i])],g[now][j]+1);
  38. Min(f[now^1][min(m,j+x[i])],g[now][j]+1);
  39. }
  40. rep(j,max(l[i],y[i])+1,r[i]-1)Min(f[now^1][j-y[i]],f[now][j]);
  41. if(minn==1e9){printf("0\n%d\n",res);return 0;}
  42. if(!(l[i]==0&&r[i]==m+1))++res;
  43. now^=1;
  44. }
  45. int ans=1e9;
  46. rep(i,1,m)if(i>l[n]&&i<r[n])Min(ans,f[now][i]);
  47. if(ans==1e9){printf("0\n%d\n",res);return 0;}
  48. printf("1\n%d\n",ans);
  49. return 0;
  50. }

另:我在DEBUG时自己下载的data

  1. In:1
  2. 5 5 0
  3. 3 3
  4. 2 1
  5. 2 3
  6. 2 1
  7. 3 2
  8. Out:1
  9. 1
  10. 2
  11. In:2
  12. 500 50 26
  13. 13 30
  14. 40 8
  15. 35 21
  16. 42 25
  17. 27 41
  18. 7 39
  19. 37 48
  20. 35 13
  21. 35 43
  22. 46 28
  23. 28 21
  24. 31 14
  25. 22 4
  26. 30 29
  27. 7 49
  28. 47 19
  29. 30 42
  30. 26 15
  31. 13 24
  32. 44 40
  33. 20 2
  34. 34 8
  35. 5 24
  36. 20 39
  37. 17 21
  38. 22 1
  39. 46 3
  40. 14 19
  41. 7 49
  42. 3 18
  43. 4 5
  44. 37 38
  45. 47 18
  46. 9 10
  47. 46 3
  48. 5 17
  49. 9 38
  50. 24 13
  51. 12 48
  52. 7 29
  53. 24 28
  54. 34 21
  55. 36 3
  56. 44 47
  57. 2 46
  58. 15 11
  59. 1 2
  60. 48 3
  61. 25 7
  62. 18 21
  63. 10 22
  64. 37 23
  65. 16 16
  66. 36 27
  67. 19 42
  68. 11 43
  69. 26 44
  70. 14 12
  71. 47 13
  72. 9 4
  73. 9 23
  74. 14 14
  75. 30 18
  76. 17 10
  77. 24 34
  78. 30 38
  79. 11 23
  80. 12 26
  81. 43 3
  82. 9 13
  83. 49 24
  84. 11 25
  85. 19 29
  86. 41 21
  87. 41 49
  88. 29 5
  89. 28 48
  90. 18 13
  91. 16 39
  92. 22 44
  93. 28 7
  94. 33 39
  95. 29 49
  96. 15 23
  97. 2 28
  98. 40 6
  99. 3 1
  100. 31 26
  101. 29 27
  102. 2 20
  103. 32 30
  104. 24 10
  105. 28 46
  106. 22 48
  107. 36 48
  108. 43 19
  109. 5 26
  110. 8 34
  111. 30 28
  112. 12 36
  113. 6 2
  114. 41 13
  115. 2 27
  116. 38 30
  117. 5 39
  118. 5 36
  119. 20 33
  120. 1 3
  121. 29 27
  122. 2 20
  123. 25 49
  124. 39 34
  125. 30 2
  126. 18 10
  127. 34 29
  128. 45 45
  129. 35 41
  130. 8 36
  131. 19 46
  132. 21 28
  133. 35 30
  134. 19 10
  135. 13 19
  136. 13 47
  137. 45 19
  138. 22 25
  139. 18 16
  140. 9 47
  141. 18 32
  142. 12 7
  143. 16 12
  144. 2 2
  145. 3 15
  146. 42 26
  147. 11 14
  148. 9 1
  149. 43 27
  150. 11 12
  151. 1 28
  152. 14 1
  153. 2 35
  154. 25 24
  155. 2 39
  156. 21 24
  157. 21 37
  158. 35 41
  159. 48 37
  160. 42 6
  161. 2 35
  162. 37 17
  163. 4 45
  164. 17 2
  165. 28 32
  166. 13 28
  167. 10 31
  168. 34 16
  169. 17 14
  170. 39 23
  171. 3 15
  172. 2 28
  173. 2 36
  174. 20 49
  175. 28 17
  176. 11 29
  177. 2 47
  178. 1 10
  179. 42 23
  180. 12 25
  181. 5 29
  182. 9 20
  183. 11 42
  184. 35 27
  185. 6 25
  186. 5 9
  187. 39 6
  188. 41 46
  189. 41 11
  190. 45 20
  191. 28 6
  192. 4 34
  193. 8 10
  194. 44 1
  195. 32 6
  196. 30 36
  197. 34 38
  198. 11 44
  199. 30 46
  200. 26 36
  201. 26 30
  202. 49 20
  203. 35 40
  204. 16 32
  205. 7 17
  206. 2 39
  207. 27 10
  208. 23 35
  209. 19 17
  210. 40 1
  211. 27 20
  212. 42 17
  213. 9 3
  214. 16 43
  215. 4 42
  216. 34 34
  217. 27 33
  218. 5 18
  219. 29 25
  220. 49 35
  221. 41 6
  222. 24 19
  223. 15 2
  224. 9 34
  225. 24 48
  226. 39 1
  227. 23 31
  228. 22 31
  229. 39 38
  230. 30 47
  231. 35 14
  232. 32 12
  233. 47 41
  234. 29 31
  235. 16 28
  236. 21 13
  237. 38 44
  238. 31 4
  239. 1 44
  240. 42 24
  241. 42 31
  242. 30 15
  243. 18 2
  244. 2 12
  245. 44 31
  246. 9 29
  247. 44 45
  248. 41 46
  249. 36 20
  250. 27 3
  251. 4 3
  252. 20 41
  253. 46 1
  254. 49 3
  255. 44 41
  256. 26 41
  257. 28 11
  258. 11 1
  259. 18 12
  260. 12 12
  261. 42 25
  262. 41 42
  263. 21 37
  264. 43 12
  265. 12 26
  266. 19 20
  267. 28 38
  268. 12 30
  269. 43 16
  270. 32 42
  271. 8 13
  272. 33 40
  273. 24 44
  274. 40 46
  275. 11 7
  276. 8 4
  277. 36 4
  278. 1 12
  279. 45 43
  280. 24 8
  281. 19 47
  282. 27 47
  283. 36 43
  284. 32 29
  285. 10 14
  286. 27 22
  287. 26 10
  288. 12 5
  289. 9 7
  290. 1 20
  291. 18 14
  292. 28 9
  293. 22 28
  294. 21 18
  295. 26 49
  296. 30 1
  297. 2 12
  298. 3 37
  299. 11 34
  300. 22 20
  301. 47 48
  302. 46 28
  303. 13 13
  304. 33 22
  305. 24 38
  306. 46 41
  307. 7 24
  308. 5 29
  309. 7 30
  310. 2 32
  311. 29 36
  312. 32 31
  313. 47 34
  314. 23 8
  315. 18 49
  316. 32 20
  317. 47 33
  318. 48 16
  319. 45 36
  320. 42 19
  321. 29 38
  322. 15 36
  323. 12 25
  324. 20 23
  325. 5 26
  326. 5 39
  327. 12 42
  328. 25 9
  329. 31 47
  330. 22 5
  331. 3 9
  332. 24 5
  333. 42 27
  334. 20 42
  335. 13 12
  336. 12 47
  337. 49 31
  338. 33 16
  339. 6 3
  340. 38 11
  341. 28 48
  342. 49 44
  343. 40 24
  344. 8 26
  345. 26 29
  346. 30 28
  347. 43 10
  348. 33 35
  349. 36 8
  350. 27 5
  351. 20 43
  352. 2 24
  353. 30 34
  354. 40 35
  355. 41 33
  356. 1 24
  357. 31 5
  358. 18 26
  359. 33 25
  360. 3 10
  361. 10 32
  362. 42 8
  363. 46 30
  364. 42 33
  365. 38 24
  366. 37 8
  367. 23 43
  368. 31 3
  369. 32 26
  370. 42 28
  371. 10 43
  372. 2 40
  373. 47 24
  374. 22 31
  375. 4 24
  376. 45 18
  377. 11 37
  378. 25 8
  379. 23 22
  380. 45 11
  381. 2 37
  382. 18 24
  383. 30 4
  384. 31 17
  385. 30 23
  386. 44 44
  387. 16 1
  388. 39 19
  389. 29 11
  390. 5 37
  391. 39 49
  392. 6 6
  393. 41 35
  394. 13 14
  395. 13 13
  396. 29 14
  397. 49 46
  398. 42 34
  399. 6 23
  400. 1 35
  401. 45 49
  402. 34 17
  403. 49 23
  404. 35 28
  405. 34 44
  406. 20 28
  407. 48 25
  408. 33 44
  409. 16 45
  410. 14 28
  411. 13 42
  412. 41 12
  413. 39 33
  414. 45 49
  415. 11 1
  416. 34 6
  417. 49 18
  418. 22 4
  419. 45 12
  420. 36 29
  421. 11 7
  422. 8 9
  423. 36 40
  424. 4 2
  425. 41 17
  426. 34 4
  427. 9 30
  428. 21 3
  429. 13 21
  430. 2 28
  431. 22 40
  432. 34 26
  433. 13 11
  434. 35 9
  435. 28 21
  436. 42 38
  437. 27 5
  438. 47 19
  439. 45 6
  440. 25 41
  441. 27 10
  442. 49 40
  443. 39 20
  444. 43 8
  445. 46 49
  446. 35 23
  447. 45 24
  448. 48 8
  449. 35 33
  450. 21 18
  451. 10 14
  452. 6 41
  453. 18 8
  454. 10 18
  455. 18 35
  456. 14 44
  457. 49 14
  458. 35 38
  459. 38 33
  460. 1 34
  461. 32 36
  462. 7 27
  463. 10 11
  464. 40 49
  465. 48 11
  466. 17 8
  467. 24 28
  468. 49 47
  469. 35 14
  470. 15 4
  471. 48 29
  472. 3 3
  473. 47 37
  474. 41 35
  475. 20 41
  476. 20 8
  477. 32 31
  478. 39 47
  479. 41 34
  480. 46 40
  481. 45 19
  482. 3 24
  483. 46 2
  484. 26 36
  485. 21 46
  486. 44 19
  487. 30 47
  488. 27 27
  489. 34 18
  490. 17 10
  491. 14 41
  492. 22 46
  493. 23 16
  494. 48 19
  495. 1 49
  496. 14 1
  497. 18 17
  498. 24 19
  499. 23 6
  500. 6 43
  501. 2 5
  502. 18 31
  503. 2 44
  504. 8 41
  505. 17 29
  506. 1 30
  507. 21 27
  508. 31 43
  509. 42 29
  510. 17 47
  511. 34 31
  512. 47 7
  513. 201 26 45
  514. 157 31 43
  515. 476 32 37
  516. 265 13 50
  517. 300 25 27
  518. 478 4 25
  519. 485 29 44
  520. 425 22 44
  521. 392 44 49
  522. 133 25 38
  523. 320 27 50
  524. 384 2 45
  525. 313 25 40
  526. 287 16 29
  527. 7 1 11
  528. 250 7 43
  529. 130 43 46
  530. 46 16 32
  531. 2 17 42
  532. 5 8 13
  533. 158 0 24
  534. 297 27 30
  535. 499 40 47
  536. 397 43 49
  537. 431 0 31
  538. 63 42 50
  539. Out:2
  540. 0
  541. 14

洛谷 P1941 飞扬的小鸟的更多相关文章

  1. Codevs 3729==洛谷P1941 飞扬的小鸟

    P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录   题目描述 Flappy Bird 是一 ...

  2. [洛谷P1941] 飞扬的小鸟

    洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...

  3. [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟

    题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...

  4. 洛谷P1941飞扬的小鸟——细节DP

    题目:https://www.luogu.org/problemnew/show/P1941 此题主要注意许多细节,详见代码. 代码如下: #include<iostream> #incl ...

  5. 2018.11.06 洛谷P1941 飞扬的小鸟(背包)

    传送门 上升看成完全背包. 下降看成01背包. 注意边界转移就行了. 代码: #include<bits/stdc++.h> using namespace std; inline int ...

  6. 洛谷P1941 飞扬的小鸟 [noip2014] 背包

    正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入 ...

  7. 洛谷P1941 飞扬的小鸟(背包 dp)

    题意 题目链接 Sol 很显然的dp,设\(f[i][j]\)表示第\(i\)个位置,高度为\(j\)的最小步数 向上转移的时候是完全背包 向下转移判断一下就可以 #include<bits/s ...

  8. 洛谷 P1941 飞扬的小鸟【dp】

    设f[i][j]为在坐标(i,j)时的最小点击次数,转移的话从i-1向上飞或者向下掉转移,注意转移完了之后要把管子部分赋值为inf #include<iostream> #include& ...

  9. 洛谷P1941飞扬的小鸟 完全背包

    思维难度不大,就是有许多细节要注意. 1.不能开滚动数组. 2.要特判飞过天花板的情况. Code: #include<cstdio> #include<algorithm> ...

随机推荐

  1. Js 中的 this

    Js 中 this 的理解   this 是啥 ? this是 JavaScript 语言的一个关键字,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用; 随着函数使用场合的不同,this ...

  2. MyBatis(1)-简单入门

    简介 什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.My ...

  3. Qt之操作数据库(SQLite)实例

    QtSql模块提供了与平台以及数据库种类无关的访问SQL数据库的接口,这个接口由利用Qt的模型视图结构将数据库与用户界面集成的一套类来支持.QSqlDatabase对象象征了数据库的关联.Qt使用驱动 ...

  4. 查看rpm包里面内容以及里面文件的内容

    如果想查看rpm包里面的内容使用命令: rpm -qpl xxxx.rpm   如果想查看rpm包里面的内容导出,而不是安装,使用命令: rpm2cpio xxxx.rpm | cpio -ivd 就 ...

  5. DDL-数据类型

    一.数值型1.整型tinyint.smallint.mediumint.int/integer.bigint1         2        3          4            8 特 ...

  6. 进程通信-Queue

    进程通信-Queue Queue消息队列是python进程通信的其中一种方式.需要引入multiprocessing包中的Queue函数(这是函数,不是类). 有一个queue包,里面也有Queue, ...

  7. 构建WebGL目标时的内存考量

    Memory Considerations when targeting WebGL 构建WebGL目标时的内存考量 Memory in Unity WebGL can be a constraini ...

  8. cookie、localstorage、sessionstorage区别

      localstorage sessionsorage cookie 大小 浏览器不能保存超过300个cookie,单个服务器不能超过20个,每个cookie不能超过4k 可以达到5M 可以达到5M ...

  9. 一图看懂JVM,JRE,JDK的关系

  10. keil编译运行错误,缺少error:#5:#include "core_cm3.h"

    用Keil  vision5编译时出现以下错误:error:  #5: cannot open source input file "core_cm3.h": No such fi ...