| syhd142 |
|
|||
|
日歷
統計
導航常用鏈接留言簿(2)隨筆檔案(23)文章分類(270)
文章檔案(122)我的豆瓣搜索最新評論
|
據說是經典題,狀態方程不難設計,一開始自己從低往上推,錯了,沒想明白為什么,看了人家思路才知道,原來固定了初始位置。 這樣從低往上推就不能保證初始位置在5,所以應該從上往下來推才行。有個把月沒做題了,思維遲鈍了。 #include <stdio.h>
#include <string.h> #define N 100005 #define MAX(a, b) (a > b ? a : b) int f[N][11]; int main() { int n, x, t, maxTime, ans; while(scanf("%d", &n), n) { maxTime = 1; ans = 0; memset(f, 0, sizeof(f)); for(int i = 0; i < n; i++) { scanf("%d %d", &x, &t); f[t][x]++; if(t > maxTime) maxTime = t; } for(int i = maxTime; i >= 0; i--) { f[i][0] += MAX(f[i + 1][0], f[i + 1][1]); for(int j = 1; j < 10; j++) { f[i][j] += MAX(f[i + 1][j], MAX(f[i + 1][j - 1], f[i + 1][j + 1])); } f[i][10] += MAX(f[i + 1][9], f[i + 1][10]); } printf("%d\n", f[0][5]); } return 0; }
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
| Copyright © Fucker | Powered by: 博客園 模板提供:滬江博客 |