ACM 131. [USACO Mar08] 奶牛渡河(线性dp)
131. [USACO Mar08] 奶牛渡河
★☆ 输入文件: cowriver.in
输出文件: cowriver.out
简单对比
时间限制:1 s 内存限制:128 MB
-
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一个人把木筏从对岸划回来接下一批的奶牛的时间。
程序名: cowriver
输入格式:
- 第1行: 2个用空格隔开的整数:N 和 M
- 第2..N+1行: 第i+1为1个整数:M_i
输入样例 (cowriver.in):
5 10 3 4 6 100 1
输入说明:
FJ带了5头奶牛出门。如果是单独把木筏划过河,FJ需要花10分钟,带上1头奶牛的话,是13分钟,2头奶牛是17分钟,3头是23分钟,4头是123分钟,将5头一次性载过去,花费的时间是124分钟。
输出格式:
- 第1行: 输出1个整数,为FJ把所有奶牛都载过河所需的最少时间
输出样例 (cowriver.out):
50
输出说明:
Farmer John第一次带3头奶牛过河(23分钟),然后一个人划回来(10分钟),最后带剩下的2头奶牛一起过河(17分钟),总共花费的时间是23+10+17 = 50分钟。
dp核心
dp[0]=m;
sumM=m;
for(int i=1;i<=N;i++)
{
int minx=INF;
sumM+=M[i-1];
minx=sumM;for(int j=1;j<i;j++)
{
minx=min(minx,dp[j]+m+dp[i-j]);
}
dp[i]=minx;
}#include <iostream> #include <cstdio>using namespace std;#define MAX_N 2502 #define INF 99999999int N,m; int M[MAX_N]; int dp[MAX_N]; int sumM;int main() {freopen("cowriver.in","r",stdin);freopen("cowriver.out","w",stdout);cin>>N>>m;for(int i=0;i<N;i++) cin>>M[i];dp[0]=m;sumM=m;for(int i=1;i<=N;i++){int minx=INF;sumM+=M[i-1];minx=sumM;for(int j=1;j<i;j++){minx=min(minx,dp[j]+m+dp[i-j]);}dp[i]=minx;}cout<<dp[N]<<endl;return 0; }
ACM 131. [USACO Mar08] 奶牛渡河(线性dp)相关推荐
- ACM 130. [USACO Mar08] 游荡的奶牛(dp+BFS)
130. [USACO Mar08] 游荡的奶牛 ★☆ 输入文件:ctravel.in 输出文件:ctravel.out 简单对比 时间限制:1 s 内存限制:128 MB 奶牛们在被 ...
- [USACO Mar08] 游荡的奶牛
[USACO Mar08] 游荡的奶牛 时间限制:1 s 内存限制:128 MB 奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游 ...
- 0x51.动态规划 - 线性DP(习题详解 × 10)
目录 0x51.动态规划 - 线性DP 0x51.1 LIS问题 Problem A. 登山 (最长下降子序列) Problem B. 友好城市(思维) Problem C. 最大上升子序列和 0x5 ...
- UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)
整理的算法模板合集: ACM模板 依旧是线性DP 我们使用闫氏DP分析法 总体DP转移的时间复杂度为O(n2)O(n^2)O(n2). 但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回 ...
- [nk] 糟糕的打谱员 线性DP
前言 线性DP是世界上最难的算法!!(我在口胡) 前言 : https://ac.nowcoder.com/acm/contest/11215/C 思路 看完该题之后 (问的什么鬼 贪心?排序之后交替 ...
- 洛谷P2401 不等数列(线性DP)
本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...
- [USACO Mar08] 牛跑步 --k短路
[USACO Mar08] 牛跑步 Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘,然后走回牛棚. Bessie也不想跑得太远,所以她想走最短的路经. 农场 ...
- CodeForces - 1096D Easy Problem(线性dp)
题目链接:点击查看 题目大意:给出一个字符串,每个字符都有一个权值,现在需要删除权值和最少的字符,满足字符串中不再含有子序列"hard" 题目分析:线性dp,但我不会,看着题解写的 ...
- CodeForces - 456C Boredom(线性dp)
题目链接:点击查看 题目大意:给出一个由n个数字组成的数列,现在给出规则是,每次选择数列中的一种数字 x,选择后的贡献为 x,不过操作后会删除掉所有数值为 x + 1 和 x - 1 的数,现在问如何 ...
最新文章
- groovy–流程控制
- 【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制
- Google推出HTML 5练兵场 提供详尽代码示例,互联网营销
- 人人都可以做深度学习应用:入门篇
- 起航,第一个程序——还是LED灯
- JS的NaN与isNaN
- vue 项目 引用(外部) js、css
- 【spider】selenium模拟点击斗鱼示例
- android 拨打电话与发送短信
- 图像的频率谱和功率谱代表什么_使用 FastAI 和即时频率变换进行音频分类
- GitHub上最火的40个iOS开源项目(二)
- 【323天】每日项目总结系列061(2017.12.25)
- MPLS virtual private network Spoken-Hub网络实验(华为设备)
- .Net转Java自学之路—Mybatis框架篇五(查询缓存)
- mysql中文模糊查询_解决mysql中文模糊查询问题的方法
- java基础习题_Java基础知识练习题及答案
- SpaceSniffer 内存管理 空间嗅探器内存清理神器
- INA226+STC89C52RC读取电流电压功率
- 嵌入式课程设计第一篇之OLED与温湿度模块
- 离线安装openOffice
热门文章
- 二分法查找---logn复杂度
- LITS数据集 总切片和单张Nii切片数目统计
- 度金互联网金融社区:做一个学习型投资人
- 【Java作业】模拟停车场(超详细!)
- 架构12 社交软件红包技术05
- 智联招聘数据爬取准备(2)-招聘信息页面及企业主页源码解析
- [转帖]Greenplum: 基于PostgreSQL的分布式数据库内核揭秘(下篇)
- 基于MNIST数据集通过朴素贝叶斯学习生成随机手写体数字图像
- 2019年支付宝优惠:免费或0.6元可购一张电子公交5折月卡
- 湖北大学计算机学院周双娥,科学网—“第三届‘蓝桥杯’全国软件大赛”湖北分赛区组委会组成名单 - 程学先的博文...