题目描述

 Afandi is herding N sheep across the expanses of grassland  when he finds himself blocked by a river. A single raft is available for transportation.
Afandi knows that he must ride on the raft for all crossings, but adding sheep to the raft makes it traverse the river more slowly.
When Afandi is on the raft alone, it can cross the river in M minutes When the i sheep are added, it takes Mi minutes longer to cross the river than with i-1 sheep (i.e., total M+M1   minutes with one sheep, M+M1+M2 with two, etc.).
Determine the minimum time it takes for Afandi to get all of the sheep across the river (including time returning to get more sheep).

输入

On the first line of the input is a single positive integer k, telling the number of test cases to follow. 1 ≤ k ≤ 5  Each case contains:
* Line 1: one space-separated integers: N and M      (1 ≤ N ≤ 1000 , 1≤ M ≤ 500).
* Lines 2..N+1:  Line i+1 contains a single integer: Mi  (1 ≤ Mi ≤ 1000)

输出

For each test case, output a line with the minimum time it takes for Afandi to get all of the sheep across the river.

样例输入

2
2 10
3
5
5 10
3
4
6
100
1

样例输出

18
50 要认真读题才能看懂题意:
题中说的是如果第一次带两只羊,时间是m+m1+m2;第二次带一只羊用时m1(第一只羊的m);第三次带2只羊用m1+m2(第一只羊和第二只羊的m);
例如第二组数据:第一次带3+4+6+10=23;第二次3+4+10=17;共用时23+17+10=50;
用一个前缀和数组time,time[i]表示单独运送i只羊所花费的时间。
dp[i]表示一个人和i只羊过河所花费的最短时间,则开始时dp[i] = time[i] + M,
以后更新时,dp[i] = min(dp[i],dp[i-j] + m + dp[j]),
j从1循环到i-1,即把i只羊分成两个阶段来运,只需求出这两个阶段的和,
然后加上人从对岸回来所用的时间,与dp[i]进行比较,取最小值。
#include<stdio.h>
#include<algorithm>
using namespace std;
int dp[], time[];
int main()
{
int T, n, m, i, j;
scanf("%d",&T);
while(T--)
{
int a;
scanf("%d%d",&n, &m);
time[] = ;
for(i = ; i <= n; i++)
{
scanf("%d",&a);
time[i] = time[i-] + a;
}
for(i = ; i <= n; i++)
{
dp[i] = time[i] + m;
for(j = ; j < i; j++)
dp[i] = min(dp[i], dp[i-j] + dp[j] + m);
}
printf("%d\n",dp[n]);
}
return ;
}
//time[i]表示一次运送i只羊所花费的时间 //dp[i]表示人和i只羊一起过河所花费的最短时间

River Crossing---河南省第六届大学生程序设计竞赛的更多相关文章

  1. Contest - 中南大学第六届大学生程序设计竞赛(Semilive)

    题1:1160十进制-十六进制 注意他给的数据范围 2^31,int是 2^31-1 #include<iostream> using namespace std; int main() ...

  2. 校第十六届大学生程序设计竞赛暨2016省赛集训队选拔赛(Problem E)

    Problem E Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛

    比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...

  4. 河南省第十一届ACM大学生程序设计竞赛

    nyoj-1365-山区修路 内存限制:128MB 时间限制:3000ms 特判: No通过数:4 提交数:4 难度:3 题目描述: SNJ位于HB省西部一片群峰耸立的高大山地,横亘于A江.B水之间, ...

  5. 河南省第六届ACM程序设计大赛

    C:  最舒适的路线 (并查集) #include<cstdio> #include<cstring> #include<iostream> #include< ...

  6. 湖南省第六届大学生程序设计大赛原题 F Biggest Number (UVA1182)

    Biggest Number http://acm.hust.edu.cn/vjudge/contest/view.action?cid=30851#problem/F 解题思路:DFS(检索)+BF ...

  7. XTU OJ 1209 Alice and Bob 2014(嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛)

    Problem Description The famous "Alice and Bob" are playing a game again. So now comes the ...

  8. 黑龙江省第七届大学生程序设计竞赛-Mysterious Organization

    描述 GFW had intercepted billions of illegal links successfully. It has much more effect. Today, GFW i ...

  9. 黑龙江省第七届大学生程序设计竞赛-Heap

    描述 A heap is a full binary tree; for each node, its key is greater than its two sub-node’s key. Two ...

随机推荐

  1. 使用librtmp进行H264与AAC直播

    libx264 版本是 128libfaac 版本是 1.28 1.帧的划分 1.1 H.264 帧 对于 H.264 而言每帧的界定符为 00 00 00 01 或者 00 00 01. 比如下面的 ...

  2. informix中的时间计算

    今天看SUN服务器是的mail(vi   /var/mail/xxxuser),发现定时任务上的一些存储过程执行有错误,其中有一个错误是long transaction,长事务错误,到数据库一查,天哪 ...

  3. 安装.NET Framework 3.5

    https://www.microsoft.com/zh-CN/download/details.aspx?id=22 https://docs.microsoft.com/zh-cn/dotnet/ ...

  4. C++标准程序库笔记之一

    本篇博客笔记顺序大体按照<C++标准程序库(第1版)>各章节顺序编排. ---------------------------------------------------------- ...

  5. Eclipse配色方案插件

    Eclipse配色方案插件 真漂亮! 最近发现了一个Eclipse配色方案插件,这回给Eclipse配色太方便了. 插件主页:http://eclipsecolorthemes.org/ 插件提供了上 ...

  6. python基础---->python的使用(五)

    这里记录一些python的一些基础知识,主要内容是高阶函数的使用.或许我的心包有一层硬壳,能破壳而入的东西是极其有限的.所以我才不能对人一往情深. python中的高阶函数 一.map().reduc ...

  7. Elasticsearch学习之Java操作1

    1. Elasticsearch为Java用户提供了两种内置客户端 1.1 节点客户端(node client): 节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己不 ...

  8. github上打包的样式为什么在预览的时候,出现404

    这是资源引用的问题 在这里主要是需要在dist的index.html文件内将"./static/css/style.css"改为"static/css/style.css ...

  9. sencha touch 常见问题解答(1-25)

    欢迎留言补充,持续更新中... 1.sencha touch 是什么? 答:Sencha touch框架是世界上第一个基于HTML 5的移动应用框架.它可以让你的Web应用看起来像网络应用.美丽的用户 ...

  10. OpenStack网络详解

    本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. Openstack需要对网络有一些了解才能进入openstack的世界,很多都是 ...