ny716 River Crossing
River Crossing
- 描述
-
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
题目讲解:我和别人讨论很久才弄懂题目,有的说和过河问题很像,但是两个意思不同,又有很大的差别
我还是讲解一下大概意思吧,题中说道阿凡提需要把羊送到对面去,但是呢他只有一条船,而且他也可以选择每次带几个羊过去,
当然了,也可以一次性的带走完,带不完的话还要回来再带走,这样的话回来花的时间也要加上了,需要注意的是每个并羊没有对应的时间,
它所需要的时间取决于在这个时间顺序中她是第几个上船的;
下面看一下案列1:很显然羊是一下被带走完的,时间是3+5+10(自己的时间)=18分钟;
然而案例二却看不懂了吧,我就详细分析一下:首先是五个羊当然会有五个时间了,你有很多选择,一次带走完,一个一个的....
如果一次一个时间是多少呢?第一次走:3+10 回来:10 然后第二次再走:3+10(或许就在这疑惑了,怎么还是3呢为什么不是4呢,我说了羊没有对应的时间,
第一个上船的时间就是3,如果运两个羊第二个时间是4,然后回来后,又重新开始第一个,第二个....)然后又回来:10 第三次再走:3+10 回来:10 第四次再走3+10 回来:10
第五次再走:3+10 所以共:3+10 +10 +3+10 +10 +3+10 +10 +3+10 +10 +3+10=105分钟;
最优解应该是这个样子的第一次带三个羊:3+4+6+10 回来:10 再带走两个羊:3+4+10 共23+10+17=50分钟
参考代码如下:参考的大神的#include<iostream>
#include<cstdio>
using namespace std;
const int mmax=0x3fffffff;
int a[],mmin[],m;
int dp(int n)
{
if(n<=)
return ;
if(mmin[n]!=mmax)
return mmin[n];
int ans=mmax;
for(int i=;i<=n;i++)
{
if(dp(n-i)+a[i]+m<ans)
ans=dp(n-i)+a[i]+m;
}
return mmin[n]=ans;
}
int main()
{
int i,j,k,t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&n,&m);
a[]=m;
for(i=;i<=n;i++)
{
scanf("%d",&a[i]);
a[i]+=a[i-];
mmin[i]=mmax;
}
printf("%d\n",dp(n)-m);
}
return ;
}代码二:
#include <iostream>
#include <algorithm>
#include <fstream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
int n,k,f[],ans[],l;
int i,m,j,temp;
scanf("%d",&k);
for(i=;i<=k;i++)
{
memset(f,,sizeof(f));
memset(ans,,sizeof(ans));
scanf("%d %d",&n,&m);
f[]=m;
for(j=;j<=n;j++)
{ scanf("%d",&temp);
f[j]=f[j-]+temp;
}
ans[]=f[];
for(j=;j<=n;j++)
{
ans[j]=f[j];
for(l=;l<j;l++)
if(ans[l]+ans[j-l]+m<ans[j])
ans[j]=ans[l]+ans[j-l]+m;
}
printf("%d\n",ans[n]); }
return ;
}
ny716 River Crossing的更多相关文章
- BZOJ1617: [Usaco2008 Mar]River Crossing渡河问题
1617: [Usaco2008 Mar]River Crossing渡河问题 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 654 Solved: 4 ...
- BZOJ 1617: [Usaco2008 Mar]River Crossing渡河问题( dp )
dp[ i ] = max( dp[ j ] + sum( M_1 ~ M_( i - j ) ) + M , sum( M_1 ~ M_i ) ) ( 1 <= j < i ) 表示运 ...
- BZOJ 1617: [Usaco2008 Mar]River Crossing渡河问题
题目 1617: [Usaco2008 Mar]River Crossing渡河问题 Time Limit: 5 Sec Memory Limit: 64 MB Description Farmer ...
- 第六届河南省赛 River Crossing 简单DP
1488: River Crossing Time Limit: 1 Sec Memory Limit: 128 MB Submit: 83 Solved: 42 SubmitStatusWeb ...
- bzoj1617 / P2904 [USACO08MAR]跨河River Crossing
P2904 [USACO08MAR]跨河River Crossing 显然的dp 设$f[i]$表示运走$i$头奶牛,木筏停在未过河奶牛一侧所用的最小代价 $s[i]$表示一次运$i$头奶牛到对面的代 ...
- 1617: [Usaco2008 Mar]River Crossing渡河问题(dp)
1617: [Usaco2008 Mar]River Crossing渡河问题 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1219 Solved: ...
- [bzoj1617][Usaco2008 Mar]River Crossing渡河问题_动态规划
River Crossing渡河问题 bzoj-1617 Usaco-2008 Mar 题目大意:题目链接. 注释:略. 想法:zcs0724出考试题的时候并没有发现这题我做过... 先把m求前缀和, ...
- USACO River Crossing
洛谷 P2904 [USACO08MAR]跨河River Crossing https://www.luogu.org/problem/P2904 JDOJ 2574: USACO 2008 Mar ...
- P2904 [USACO08MAR]跨河River Crossing
题目描述 Farmer John is herding his N cows (1 <= N <= 2,500) across the expanses of his farm when ...
随机推荐
- Linux下Tar压缩使用
具体的可以在linux环境下 用tar --help查看详细说明格式:tar [option] file -c create create a new archive -x extract extra ...
- struts2接收参数的几种形式
1.使用属性 HTML: <form action="login" method="post" name="form1"> 用户 ...
- Web文件管理、私有云存储管理工具 DzzOffice
DzzOffice-大桌子办公系统本身是一款图形化,简单易用的网盘管理软件.可以实现将企业的局域网服务器.企业私有云存储.企业租用的公有云存储(如阿里云OSS).企业员工的私有云存储(如百度网盘.Dr ...
- Android SharedPreferences保存和读取对象
SharedPreferences保存和读取对象 1.首先要序列化对象(以下是序列化实体类的样例,不方便贴出实体类全部的代码) public class LoginResult extends Bas ...
- jquery实现高度的获取-位置函数
一.位置函数 1.offset() 获取匹配元素在当前视口的相对偏移.返回的对象包含两个整形属性:top 和 left.此方法只对可见元素有效. 2.innerWidth() 获取第一个匹配元素内部区 ...
- SQL SERVER SELECT语句中加锁选项的详细说明 [转]
SQL Server提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能.用户既能使用SQL Server的缺省设置也可以在select 语句中使用“加锁选项”来实现预期的效果. 本文介绍了S ...
- ArcMap导入数据到ArcSDE报000597或者000224的错误
这两天碰到不同用户提出的不同的问题,可是分析之后发现导致该问题的解决办法是同一个原因. -------------------------------------------------------- ...
- InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings In
InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is s ...
- MATLAB(3)——GUI界面设计入门
作者:桂. 时间:2017-03-01 18:43:35 链接:http://www.cnblogs.com/xingshansi/articles/6485688.html 声明:转载请注明出处, ...
- 权限管理系统(一):权限系统与RBAC模型概述
RBAC模型概述 RBAC即角色访问控制(Role Based Access Control) RBAC认为权限授权实际上是Who.What.How的问题.在RBAC模型中,who.what.how构 ...