zoukankan      html  css  js  c++  java
  • TYVJ P1088 treat Label:鞭笞人的DP

    时间: 1000ms / 空间: 131072KiB / Java类名: Main

    背景

    广东汕头聿怀初中 Train#2 Problem2

    描述

    给出长度为N的数列{A_i},每次可以从最左边或者最右边取走一个数,第i次取数得到的价值是i * A_j。求价值之和最大的取数方案。

    输入格式

        第一行,一个整数,表示数列长度N。
        接下来N行,每行一个整数,表示数列A_i。

    输出格式

    一个整数,表示最大的价值之和。

    测试样例1

    输入






    2

    输出

    43

    备注

    N <= 2000 , A_i <= 1000

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int N,f[2005][2005],a[2005],sum;
    int main(){
    //    freopen("01.txt","r",stdin);
        scanf("%d",&N);
        for(int i=1;i<=N;i++) scanf("%d",&a[i]);
        for(int i=0;i<=N;i++){
            for(int j=0;j<=N-i;j++){
                f[i+1][j+1]=max(f[i][j+1]+(i+j)*a[i],f[i+1][j]+(i+j)*a[N-j+1]);
            }
        }
        for(int i=0;i<=N;i++) sum=max(sum,f[i+1][N-i+1]); 
        printf("%d
    ",sum);
        return 0;
    }

    我是不会告诉你这是DP的,来自一个在贪心卡了2H的蒟蒻

    版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
  • 相关阅读:
    TCP流量控制
    TCP可靠传输的实现
    springbean补充:关于bean的属性
    mybatis分页插件,自动生成代码插件
    mybatis拦截器,分页插件
    mybatis注解开发
    mybatis缓存
    mybatis调用存储过程
    Oracle学习笔记12:oracle优化
    Oracle学习笔记11:触发器
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/5780658.html
Copyright © 2011-2022 走看看