糯米

TI DaVinci, gstreamer, ffmpeg
随笔 - 167, 文章 - 0, 评论 - 47, 引用 - 0
数据加载中……

POJ 3186 Treats for the Cows 动态规划

思路:


f[倒数第几天][队列头的位置] = { 该状态下所产生的最大值 }
状态转移:
f[i][j] = max {
    V[j + i]*(N - i) + f[i - 1][j],
    f[i - 1][j + 1] + V[j]*(N - i)
}

代码:
#include <stdio.h>

inline 
int max(int a, int b)
{
    
return a > b ? a : b;
}


int N, V[2048], f[2][2048], *cur, *pre;

int main()
{
    
int i, j;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d"&N);
    
for (i = 0; i < N; i++{
        scanf(
"%d"&V[i]);
        f[
1][i] = V[i]*N;
    }

    
for (i = 1; i < N; i++{
        pre 
= f[i & 1];
        cur 
= f[(i + 1& 1];
        
for (j = 0; j < N - i; j++
            cur[j] 
= max(pre[j] + V[j + i]*(N - i), pre[j + 1+ V[j]*(N - i));
    }

    printf(
"%d\n", cur[0]);

    
return 0;
}

posted on 2010-04-26 16:36 糯米 阅读(443) 评论(0)  编辑 收藏 引用 所属分类: POJ


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理