零食"/>
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<
更多推荐
1901. 牛的零食
发布评论