syhd142 |
|
|||
日歷
統(tǒng)計(jì)
導(dǎo)航常用鏈接留言簿(2)隨筆檔案(23)文章分類(lèi)(270)
文章檔案(122)我的豆瓣搜索最新評(píng)論
閱讀排行榜
評(píng)論排行榜 |
據(jù)說(shuō)是經(jīng)典題,狀態(tài)方程不難設(shè)計(jì),一開(kāi)始自己從低往上推,錯(cuò)了,沒(méi)想明白為什么,看了人家思路才知道,原來(lái)固定了初始位置。 這樣從低往上推就不能保證初始位置在5,所以應(yīng)該從上往下來(lái)推才行。有個(gè)把月沒(méi)做題了,思維遲鈍了。 #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: 博客園 模板提供:滬江博客 |