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)相关推荐

  1. ACM 130. [USACO Mar08] 游荡的奶牛(dp+BFS)

    130. [USACO Mar08] 游荡的奶牛 ★☆   输入文件:ctravel.in   输出文件:ctravel.out   简单对比 时间限制:1 s   内存限制:128 MB 奶牛们在被 ...

  2. [USACO Mar08] 游荡的奶牛

    [USACO Mar08] 游荡的奶牛 时间限制:1 s 内存限制:128 MB 奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游 ...

  3. 0x51.动态规划 - 线性DP(习题详解 × 10)

    目录 0x51.动态规划 - 线性DP 0x51.1 LIS问题 Problem A. 登山 (最长下降子序列) Problem B. 友好城市(思维) Problem C. 最大上升子序列和 0x5 ...

  4. UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)

    整理的算法模板合集: ACM模板 依旧是线性DP 我们使用闫氏DP分析法 总体DP转移的时间复杂度为O(n2)O(n^2)O(n2). 但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回 ...

  5. [nk] 糟糕的打谱员 线性DP

    前言 线性DP是世界上最难的算法!!(我在口胡) 前言 : https://ac.nowcoder.com/acm/contest/11215/C 思路 看完该题之后 (问的什么鬼 贪心?排序之后交替 ...

  6. 洛谷P2401 不等数列(线性DP)

    本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...

  7. [USACO Mar08] 牛跑步 --k短路

    [USACO Mar08] 牛跑步 Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘,然后走回牛棚. Bessie也不想跑得太远,所以她想走最短的路经. 农场 ...

  8. CodeForces - 1096D Easy Problem(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串,每个字符都有一个权值,现在需要删除权值和最少的字符,满足字符串中不再含有子序列"hard" 题目分析:线性dp,但我不会,看着题解写的 ...

  9. CodeForces - 456C Boredom(线性dp)

    题目链接:点击查看 题目大意:给出一个由n个数字组成的数列,现在给出规则是,每次选择数列中的一种数字 x,选择后的贡献为 x,不过操作后会删除掉所有数值为 x + 1 和 x - 1 的数,现在问如何 ...

最新文章

  1. groovy–流程控制
  2. 【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制
  3. Google推出HTML 5练兵场 提供详尽代码示例,互联网营销
  4. 人人都可以做深度学习应用:入门篇
  5. 起航,第一个程序——还是LED灯
  6. JS的NaN与isNaN
  7. vue 项目 引用(外部) js、css
  8. 【spider】selenium模拟点击斗鱼示例
  9. android 拨打电话与发送短信
  10. 图像的频率谱和功率谱代表什么_使用 FastAI 和即时频率变换进行音频分类
  11. GitHub上最火的40个iOS开源项目(二)
  12. 【323天】每日项目总结系列061(2017.12.25)
  13. MPLS virtual private network Spoken-Hub网络实验(华为设备)
  14. .Net转Java自学之路—Mybatis框架篇五(查询缓存)
  15. mysql中文模糊查询_解决mysql中文模糊查询问题的方法
  16. java基础习题_Java基础知识练习题及答案
  17. SpaceSniffer 内存管理 空间嗅探器内存清理神器
  18. INA226+STC89C52RC读取电流电压功率
  19. 嵌入式课程设计第一篇之OLED与温湿度模块
  20. 离线安装openOffice

热门文章

  1. 二分法查找---logn复杂度
  2. LITS数据集 总切片和单张Nii切片数目统计
  3. 度金互联网金融社区:做一个学习型投资人
  4. 【Java作业】模拟停车场(超详细!)
  5. 架构12 社交软件红包技术05
  6. 智联招聘数据爬取准备(2)-招聘信息页面及企业主页源码解析
  7. [转帖]Greenplum: 基于PostgreSQL的分布式数据库内核揭秘(下篇)
  8. 基于MNIST数据集通过朴素贝叶斯学习生成随机手写体数字图像
  9. 2019年支付宝优惠:免费或0.6元可购一张电子公交5折月卡
  10. 湖北大学计算机学院周双娥,科学网—“第三届‘蓝桥杯’全国软件大赛”湖北分赛区组委会组成名单 - 程学先的博文...