线性dp 之 奶牛渡河
题目描述
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得花分钟渡河;船上有2头奶牛时,时间就变成分钟。后面 的依此类推。
那么,FJ最少要花多少时间,才能把所有奶牛带到对岸呢?当然,这个时间得包括FJ一个人把木筏从对岸划回来接下一批的奶牛的时间。
输入格式
第1行: 2个用空格隔开的整数:N 和 M
第2..N+1行: 第i+1为1个整数:
输出格式
第1行: 输出1个整数,为FJ把所有奶牛都载过河所需的最少时间
样例
样例输入
5 10
3
4
6
100
1
样例输出
50
数据范围与提示
【输入说明】
FJ带了5头奶牛出门。如果是单独把木筏划过河,FJ需要花10分钟,带上1头奶牛的话,是13分钟,2头奶牛是17分钟,3头是23分钟,4头是123分钟,将5头一次性载过去,花费的时间是124分钟。
【输出说明】
Farmer John第一次带3头奶牛过河(23分钟),然后一个人划回来(10分钟),最后带剩下的2头奶牛一起过河(17分钟),总共花费的时间是23+10+17 = 50分钟。
代码
#include<cstdio>
#include<iostream>
using namespace std;
const int maxn=5050;
int a[maxn],dp[maxn];
int main(){
int n,m;scanf("%d%d",&n,&m);
a[0]=m;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
a[i]+=a[i-1];
}
for(int i=1;i<=n;i++){
dp[i]=a[i];
for(int j=1;j<=i;j++)
dp[i]=min(dp[i],dp[i-j]+dp[j]+m);
}
cout<<dp[n]<<endl;
return 0;
}
线性dp 之 奶牛渡河的更多相关文章
- 奶牛渡河——线性dp
奶牛渡河 题目描述 \(Farmer John\) 以及他的 \(N (1\leq N\leq 2500)\) 头奶牛打算过一条河,但他们所有的渡河工具,仅仅是一个木筏. 由于奶牛不会划船,在整个渡河 ...
- 奶牛渡河(dp)
奶牛渡河 时间限制: 1 Sec 内存限制: 128 MB提交: 36 解决: 27[提交][状态][讨论版][命题人:外部导入][Edit] [TestData] [同步数据] 题目描述 Far ...
- LightOJ1044 Palindrome Partitioning(区间DP+线性DP)
问题问的是最少可以把一个字符串分成几段,使每段都是回文串. 一开始想直接区间DP,dp[i][j]表示子串[i,j]的答案,不过字符串长度1000,100W个状态,一个状态从多个状态转移来的,转移的时 ...
- Codeforces 176B (线性DP+字符串)
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28214 题目大意:源串有如下变形:每次将串切为两半,位置颠倒形成 ...
- hdu1712 线性dp
//Accepted 400 KB 109 ms //dp线性 //dp[i][j]=max(dp[i-1][k]+a[i][j-k]) //在前i门课上花j天得到的最大分数,等于max(在前i-1门 ...
- 动态规划——线性dp
我们在解决一些线性区间上的最优化问题的时候,往往也能够利用到动态规划的思想,这种问题可以叫做线性dp.在这篇文章中,我们将讨论有关线性dp的一些问题. 在有关线性dp问题中,有着几个比较经典而基础的模 ...
- POJ 2479-Maximum sum(线性dp)
Maximum sum Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33918 Accepted: 10504 Des ...
- poj 1050 To the Max(线性dp)
题目链接:http://poj.org/problem?id=1050 思路分析: 该题目为经典的最大子矩阵和问题,属于线性dp问题:最大子矩阵为最大连续子段和的推广情况,最大连续子段和为一维问题,而 ...
- nyoj44 子串和 线性DP
线性DP经典题. dp[i]表示以i为结尾最大连续和,状态转移方程dp[i] = max (a[i] , dp[i - 1] + a[i]) AC代码: #include<cstdio> ...
随机推荐
- 西门子S7-300 PLC视频教程(百度网盘)收集于网络-供参考学习
百度网盘地址: 西门子300 PLC视频教程 群文件里面可以找到. 下载: https://blog.csdn.net/txwtech/article/details/93016190
- k8s的两种网络方案与多种工作模式[flannel与calico]
k8s的两种网络方案与多种工作模式 1. Flannel: flannel有三种工作模式: 1. vxlan(隧道方案) 2. host-gw(路由方案) 2. udp(在用户态实现的数据封装解封装, ...
- Python初识类与对象
Python初识类与对象 类与对象 世界观角度分析类与对象 类是一个抽象的概念,而对象是一个实体的存在,对象由类创造而出,每个对象之间互相独立互不影响,一个对象可以同时拥有多个类的方法,实例化就是通过 ...
- SQL注入之MySQL常用的查询语句
MySQL是一种使用很广的数据库,大部分网站都是用MySQL,所以熟悉对MySQL数据库的注入很重要. 首先来说下MySQL注入的相关知识点 在MySQL5.0版本之后,MySQL默认在数据库存放一个 ...
- 基于jQuery的打字机函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JasperReport报表中输出Excel时,部分列不显示的问题
JasperReport开源报表功能强大,是我们WEB系统中做报表开发的一个强有力的工具,上手也比较简单.我碰到的问题是进行报表输出时,在html网页中显示正常,但如果导出为Excel时,部分列不显示 ...
- centos7在Evolution中配置163邮箱,被阻止收件解决方法
config.mail.163.com/settings/imap/login.jsp?uid=xxxx@163.com
- 常用的rac搭建相关
平时自己测试环境搭建用,部分参数是不规范的. 生产请按照官方文档或者公司标准化文档来做. 共享硬盘: disk.locking = "FALSE" diskLib.dataCach ...
- (私人收藏)清新文艺唯美PPT模板
清新文艺唯美PPT模板 https://pan.baidu.com/s/12hP5pT2KfPGCgOnvp0rOIAf0dj
- 【API进阶之路6】一个技术盲点,差点让整个项目翻车
上次教了实习生一个方案之后,这小子跟运营妹子的关系是越走越近,时不时地撒把狗粮,在我司真正实现了研发运营一家亲~(上回你没看?戳上文剧情回顾:万万没想到,一个技术方案帮实习生追到了运营妹子) 这回想跟 ...