题目描述

Farmer John is herding his N cows (1 <= N <= 2,500) across the expanses of his farm when he finds himself blocked by a river. A single raft is available for transportation.

FJ knows that he must ride on the raft for all crossings and that that adding cows to the raft makes it traverse the river more slowly.

When FJ is on the raft alone, it can cross the river in M minutes (1 <= M <= 1000). When the i cows are added, it takes M_i minutes (1 <= M_i <= 1000) longer to cross the river than with i-1 cows (i.e., total M+M_1 minutes with one cow, M+M_1+M_2 with two, etc.). Determine the minimum time it takes for Farmer John to get all of the cows across the river (including time returning to get more cows).

Farmer John以及他的N(1 <= N <= 2,500)头奶牛打算过一条河,但他们所有的渡河工具,仅仅是一个木筏。 由于奶牛不会划船,在整个渡河过程中,FJ必须始终在木筏上。在这个基础上,木筏上的奶牛数目每增加1,FJ把木筏划到对岸就得花更多的时间。 当FJ一个人坐在木筏上,他把木筏划到对岸需要M(1 <= M <= 1000)分钟。当木筏搭载的奶牛数目从i-1增加到i时,FJ得多花M_i(1 <= M_i <= 1000)分钟才能把木筏划过河(也就是说,船上有1头奶牛时,FJ得花M+M_1分钟渡河;船上有2头奶牛时,时间就变成M+M_1+M_2分钟。后面的依此类推)。那么,FJ最少要花多少时间,才能把所有奶牛带到对岸呢?当然,这个时间得包括FJ一个人把木筏从对岸划回来接下一批的奶牛的时间。

输入输出格式

输入格式:

* Line 1: Two space-separated integers: N and M

* Lines 2..N+1: Line i+1 contains a single integer: M_i

输出格式:

* Line 1: The minimum time it takes for Farmer John to get all of the cows across the river.

输入输出样例

输入样例#1:
复制

5 10
3
4
6
100
1
输出样例#1: 复制

50

说明

There are five cows. Farmer John takes 10 minutes to cross the river alone, 13 with one cow, 17 with two cows, 23 with three, 123 with four, and 124 with all five.

Farmer John can first cross with three cows (23 minutes), then return (10 minutes), and then cross with the last two (17 minutes). 23+10+17 = 50 minutes total.

考虑 dp[ i ] 表示前 i 个奶牛的总耗费;

那么 dp 转移的时候枚举转移点即可;注意要加上单独返回时的时间;

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<bitset>
#include<ctime>
#include<deque>
#include<stack>
#include<functional>
#include<sstream>
//#include<cctype>
//#pragma GCC optimize("O3")
using namespace std;
#define maxn 200005
#define inf 0x3f3f3f3f
#define INF 9999999999
#define rdint(x) scanf("%d",&x)
#define rdllt(x) scanf("%lld",&x)
#define rdult(x) scanf("%lu",&x)
#define rdlf(x) scanf("%lf",&x)
#define rdstr(x) scanf("%s",x)
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int U;
#define ms(x) memset((x),0,sizeof(x))
const long long int mod = 1e9 + 7;
#define Mod 1000000000
#define sq(x) (x)*(x)
#define eps 1e-3
typedef pair<int, int> pii;
#define pi acos(-1.0)
const int N = 1005;
#define REP(i,n) for(int i=0;i<(n);i++)
typedef pair<int, int> pii;
inline ll rd() {
ll x = 0;
char c = getchar();
bool f = false;
while (!isdigit(c)) {
if (c == '-') f = true;
c = getchar();
}
while (isdigit(c)) {
x = (x << 1) + (x << 3) + (c ^ 48);
c = getchar();
}
return f ? -x : x;
} ll gcd(ll a, ll b) {
return b == 0 ? a : gcd(b, a%b);
}
ll sqr(ll x) { return x * x; } /*ll ans;
ll exgcd(ll a, ll b, ll &x, ll &y) {
if (!b) {
x = 1; y = 0; return a;
}
ans = exgcd(b, a%b, x, y);
ll t = x; x = y; y = t - a / b * y;
return ans;
}
*/ ll qpow(ll a, ll b, ll c) {
ll ans = 1;
a = a % c;
while (b) {
if (b % 2)ans = ans * a%c;
b /= 2; a = a * a%c;
}
return ans;
} int n, m;
int dp[maxn]; int main()
{
//ios::sync_with_stdio(0);
rdint(n); rdint(dp[0]);
for (int i = 1; i <= n; i++) {
int tmp; rdint(tmp); dp[i] = dp[i - 1] + tmp;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j < i; j++) {
dp[i] = min(dp[i], dp[j] + dp[i - j] + dp[0]);
}
}
cout << dp[n] << endl;
return 0;
}

最新文章

  1. Java 程序员必须掌握的 Linux 命令(转:导师Jencks)
  2. HTML5系列:HTML5绘图
  3. The web application [] appears to have started a thread named [Abandoned connection cleanup thread] com.mysql.jdbc.AbandonedConnectionCleanupThread
  4. IOS 面试
  5. javascript回车完美实现tab切换功能
  6. 二、python 函数
  7. Qt遍历图片文件
  8. 线程池ThreadPoolExecutor使用简介(转)
  9. C++数据结构之map----第一篇
  10. PHP数组函数的分组归纳
  11. Scrum方法论
  12. Download all Apple open source OS X files at once
  13. Source-Based XSS Test Cases
  14. vue源码阅读(一)
  15. BZOJ1063 NOI2008 道路设计 树形DP
  16. Luogu4389 付公主的背包(生成函数+多项式exp)
  17. SORT--不要仅限于题目中
  18. java.lang.UnsatisfiedLinkError: dlopen failed: library &quot;libsqlite.so&quot; not found
  19. Weblogic服务端请求伪造漏洞(SSRF)和反射型跨站请求伪造漏洞(CSS)修复教程
  20. CSS 字体术语

热门文章

  1. CPU, PSU, SPU的区别
  2. EF CODEFIRST WITH ORACLE 存储过程
  3. 用JS,做一个简单的计算器
  4. python的文件锁使用
  5. 一个servlet处理多个请求(使用Method的反射机制)
  6. CentOS 7 下设置DNS
  7. go语言linux环境配置
  8. Angular04 组件动态地从外部接收值、在组件中使用组件
  9. SpringMVC_04 拦截器 【拦截器的编程步骤】【session复习?】
  10. 463. Island Perimeter岛屿周长