博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3186 Treats for the Cows(区间DP)
阅读量:6673 次
发布时间:2019-06-25

本文共 688 字,大约阅读时间需要 2 分钟。

题意:给出的一系列的数字,每次只能从队首或者队尾出队,第n个出队就拿这个数乘以n,最后将和加起来,求最大和
 
思路:由里向外逆推区间,一上来初始化,完了再一层一层区间dp上去。
#include <cstdio>
#include <iostream>
#include <vector>
#include <cmath>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
int a[2010];
int dp[2010][2010];
int main()
{
    int n;
    while (scanf ("%d",&n)!=EOF)
    {
        for (int i=1;i<=n;i++) scanf ("%d",&a[i]);
        for (int i=1;i<=n;i++) dp[i][i]=n*a[i];
        int ans=0;
        for (int l=2;l<=n;l++)
        {
            for (int i=1;i+l-1<=n;i++)
            {
                int j=i+l-1;
                dp[i][j]=max(dp[i][j-1]+(n-l+1)*a[j],dp[i+1][j]+(n-l+1)*a[i]);
            }
        }
        printf ("%d\n",dp[1][n]);
    }
    return 0;
}

转载于:https://www.cnblogs.com/nj-czy/p/5416063.html

你可能感兴趣的文章
埃式筛法——求n以内素数
查看>>
HDOJ-1051 Wooden sticks(贪心)
查看>>
js实现类选择器和name属性选择器
查看>>
url末尾的斜杠作用探秘
查看>>
k-密码
查看>>
C# - 常用接口
查看>>
随机抽取内容
查看>>
selenium phantomjs java无界面浏览器环境搭建
查看>>
javaWeb开发中entityBean的习惯用法
查看>>
Jmeter不同接口参数上下调用总结
查看>>
mysqldump的使用
查看>>
Redis快速入门
查看>>
[杂谈]时光飞逝
查看>>
【wiggle-subsequence】leetcode-376
查看>>
订餐系统
查看>>
Quartz.NET总结(四)Quartz 远程调度
查看>>
开源虚拟化KVM(二)管理虚拟存储
查看>>
mysql数据库的主从复制脚本
查看>>
python入门——猜猜你来年的年龄
查看>>
centos 7安装搜狗输入法
查看>>