1. 程式人生 > >[BZOJ1668][Usaco2006 Oct]Cow Pie Treasures 餡餅裏的財富

[BZOJ1668][Usaco2006 Oct]Cow Pie Treasures 餡餅裏的財富

memory put algo lin con scu sam times mes

1668: [Usaco2006 Oct]Cow Pie Treasures 餡餅裏的財富

Time Limit: 3 Sec Memory Limit: 64 MB Submit: 793 Solved: 450 [Submit][Status][Discuss]

Description

最近,奶牛們熱衷於把金幣包在面粉裏,然後把它們烤成餡餅。第i塊餡餅中含有Ni(1<=Ni<=25)塊金幣,並且,這個數字被醒目地標記在餡餅表面。 奶牛們把所有烤好的餡餅在草地上排成了一個R行(1<=R<=100)C列(1<=C<=100)的矩陣。你現在站在坐標為(1,1)的餡餅邊上,當然,你可以拿到那塊餡餅裏的所有金幣。你必須從現在的位置,走到草地的另一邊,在坐標為(R,C)的餡餅旁邊停止走動。每做一次移動,你必須走到下一列的某塊餡餅旁邊,並且,行數的變動不能超過1(也就是說,如果現在你站在坐標為(r,c)的餡餅邊上,下一步你可以走到坐標為(r-1,c+1),(r,c+1),或者(r+1,c+1)的餡餅旁邊)。當你從一塊餡餅邊經過,你就可以拿走餡餅裏所有的金幣。當然啦,你一定不會願意因半路離開草地而失去唾手可得的金幣,但,最終你一定得停在坐標為(R,C)的餡餅旁邊。 現在,你拿到了一張標記著餡餅矩陣中,每一塊餡餅含金幣數量的表格。那麽,按照規則,你最多可以拿到多少金幣呢? 比方說,奶牛們把餡餅排成如下的矩陣,矩陣中的數字表示該位置的餡餅中含金幣的數量:

6 5 3 7 9 2 7 2 4 3 5 6 8 6 4 9 9 9 1 5 8

以下是條合法的路線

按上述的路線進行走動,一共可以獲得6+4+9+9+6+5+8=47個金幣.按照規則,在這個矩陣中最多可以得到50個金幣,路線如下圖所示:

Input

* 第1行: 兩個用空格隔開的整數,R和C

* 第2..R+1行: 每行包含C個用空格隔開的正整數,依次表示一行中從左往右各 個餡餅裏金幣的數量

Output

* 第1行: 輸出一個正整數,表示你所能收集到的最大金幣數目

Sample Input

3 7
6 5 3 7 9 2 7
2 4 3 5 6 8 6
4 9 9 9 1 5 8

Sample Output

50 dp
#include <cstdio>
#include <algorithm>
using namespace std; 
char buf[10000000], *ptr = buf - 1;
inline int readint(){
    int n = 0;
    char ch = *++ptr;
    while(ch < 0 || ch > 9) ch = *++ptr;
    while(ch <= 9 && ch >= 0){
        n = (n << 1) + (n << 3
) + ch - 0; ch = *++ptr; } return n; } const int INF = 0x3f3f3f3f; int num[100 + 10][100 + 10], f[2][100 + 10]; int main(){ fread(buf, sizeof(char), sizeof(buf), stdin); int R, C; R = readint(); C = readint(); for(int i = 1; i <= R; i++) for(int j = 1; j <= C; j++) num[i][j] = readint(); f[1][1] = num[1][1]; for(int i = 2; i <= R; i++) f[1][i] = -INF; for(int now, i = 2; i <= C; i++){ now = i & 1; for(int j = 1; j <= R; j++){ f[now][j] = -INF; if(j != 1) f[now][j] = f[now ^ 1][j - 1]; f[now][j] = max(f[now][j], f[now ^ 1][j]); if(j != R) f[now][j] = max(f[now][j], f[now ^ 1][j + 1]); f[now][j] += num[j][i]; } } printf("%d\n", f[C & 1][R]); return 0; }

[BZOJ1668][Usaco2006 Oct]Cow Pie Treasures 餡餅裏的財富