1901. 牛的零食

题目描述

FJ经常给产奶量高的奶牛发特殊津贴,于是很快奶牛们拥有了大笔不知该怎么花的钱。为此,FJ购置了N(1<=N<=2000)份美味的零食来卖给奶牛们。每天FJ售出一份零食。当然FJ希望这些零食全部售出后能得到最大的收益。

这些零食有以下这些有趣的特性:

  • 零食按照1…N编号,它们被排成一列放在一个很长的盒子里。盒子的两端都有开口,FJ每天可以从盒子的任一端取出最外面的一个。

  • 与美酒和好吃的奶酪相似,这些零食储存得越久就越好吃。当然,这样FJ就可以把它们卖出更高的价钱。

  • 每份零食的初始价值不一定相同。FJ进货时,第i份零食的初始价值为v(i) (1<=v(i)<=1000)。

  • 第i份零食如果在被买进后的第a天出售,则它的售价是v(i)*a。

v(i)对应的是从盒子顶端往下的第i份零食的初始价值。FJ告诉了你所有零食的初始价值,并希望你能帮他计算一下,在这些零食全被卖出后,他最多能得到多少钱。
第一份零食在买进后的第1天售出,也就是说此时a=1。以后每过一天,a的值就增加1。

输入

第1行: 一个整数N,表示零食的总数

第2…N+1行: 第i+1行给出了从盒子顶端往下的第i份零食的初始价值v(i)

输出

第1行: 输出一个整数,即FJ在卖完所有零食后的最大可能收益

Code

普通搜索 54分
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int n,ans,v[2020];

void dfs(int ste,int l,int r,int sum){
   
    if(l==r){
   
        ans=max(ans,sum+v[l]*ste);
        return;
    }
    dfs(ste+1,l+1,r,sum+ste*v[l]);
    dfs(ste+1<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值