码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ 2101 DP+优化

时间:2017-03-21 10:38:22      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:style   i+1   div   main   printf   name   nbsp   .com   logs   

思路:

http://www.cnblogs.com/exponent/archive/2011/08/14/2137849.html

f[i,i+len]=sum[i,i+len]-min(f[i+1,i+len],f[i,i+len-1]);

但题目把n出到5000,内存卡到64M,二维的状态存不下..

其实,j这一维可以省掉.我们换个状态表示

f[i,i+len]=sum[i,i+len]-min(f[i+1,i+len],f[i,i+len-1])

然后循环这样写:

for len=1 to n

   for i=1 to n-len.

容易看出第二维可以省掉了.

   想了好久才懂...

最一开始的DP都没想到TAT

//By SiriusRen
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=5555;
int n,a[N],sum[N],f[N];
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]),sum[i]=sum[i-1]+a[i];
    for(int l=0;l<=n;l++)
        for(int i=1;i+l<=n;i++)
            f[i]=sum[i+l]-sum[i-1]-min(f[i],f[i+1]);
    printf("%d\n",f[1]);
}

 

BZOJ 2101 DP+优化

标签:style   i+1   div   main   printf   name   nbsp   .com   logs   

原文地址:http://www.cnblogs.com/SiriusRen/p/6592657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!