[JL]最后的晚餐 动态规划(DP) codevs5318
[JL]最后的晚餐
TimeLimit:1000MS MemoryLimit:1000KB
64-bit integer IO format:%lld
Problem Description
【题库搜索“JL”查看更多建兰题库题目】
话说YZJ编的某程序超时了1000倍(- -!),所以他不得不在自己家门口亲眼见证这个电影般的场景。虽然他不想错过这个美妙的时刻,但是他的肚子一再抗议,要求先吃完这最后的晚餐。
现在YZJ准备依次吃n道菜。但是他只使用勺子和筷子吃,勺子和筷子可以交替使用,但是同一种菜只能用一种餐具,在开饭前他拿的是筷子。用勺子和筷子吃第i道菜的时间分别是a_i和b_i。吃第i道菜之前筷子和勺子交换的时间为c_i。
现在请你告诉ABC按他的计划依次吃完这n道菜,最小需要多少时间。
Input
第一行,一个正整数n(1<=n<=100)
以下n行,分别是三个正整数a_i,b_i,c_i(1<=a_i,b_i,c_i<=30000)
数据范围及提示:
所有其他输入<=30000 N<=20
Output
一个数,最短时间
SampleInput
3
20 40 20
10 4 25
90 100 5
SampleOutput
139
思路:看到这题我们会想到,这一道菜用筷子的的话,吃完这道菜要用的总的最小时间和这一道菜用勺子吃完要用的总的最小时间,那么我们就会想到要用一个状态来保存这个时间,但是我们会发现,一开始有两个状态,换勺子吃、用筷子吃,于是就要定义两个状态,一个是在第i道菜用勺子的总时间,另一个是第i道菜用筷子的总时间。那么我们就可以先将开头的状态初始化,dp[0][1]=第一道菜用筷子的时间,dp[0][0]=第一道菜换勺子的时间,然后之后的状态就是在之前是筷子还是汤匙之间转换;
这样就得到了状态转移方程;(dp[i][0]表示的是第i道菜用筷子吃的最小时间以及吃第i-1~0道菜用的最小时间,dp[i][1]同理)
#include<stdio.h>
const int N=;
int Min(int a, int b){ return a<b?a:b; }
int dp[N][];
int main( ){
int n, a, b, c;
scanf("%d", &n);
for(int i=; i^n; ++i){
scanf("%d%d%d", &a, &b, &c);
if(!i)
dp[i][]=a+c, dp[i][]=b;
else{
dp[i][]=Min(dp[i-][]+a, dp[i-][]+c+a);
dp[i][]=Min(dp[i-][]+b, dp[i-][]+b+c);
}
}
printf("%d\n", Min(dp[n-][], dp[n-][]));
return ;
}
拙略的代码
[JL]最后的晚餐 动态规划(DP) codevs5318的更多相关文章
- FJUT第四周寒假作业[JL]最后的晚餐(动态规划)
题目来源:http://210.34.193.66:8080/vj/Contest.jsp?cid=163#P4 [JL]最后的晚餐 TimeLimit:1000MS MemoryLimit:100 ...
- 动态规划dp
一.概念:动态规划dp:是一种分阶段求解决策问题的数学思想. 总结起来就一句话:大事化小,小事化了 二.例子 1.走台阶问题 F(10):10级台阶的走法数量 所以:F(10)=F(9)+F(8) F ...
- 算法-动态规划DP小记
算法-动态规划DP小记 动态规划算法是一种比较灵活的算法,针对具体的问题要具体分析,其宗旨就是要找出要解决问题的状态,然后逆向转化为求解子问题,最终回到已知的初始态,然后再顺序累计各个子问题的解从而得 ...
- 【转】动态规划DP
[数据结构与算法] DP 动态规划 介绍 原创 2017年02月13日 00:42:51 最近在看算法导论. DP全称是dynamic programming,这里programming不是编程,是一 ...
- 动态规划DP的优化
写一写要讲什么免得忘记了.DP的优化. 大概围绕着"是什么","有什么用","怎么用"三个方面讲. 主要是<算法竞赛入门经典>里 ...
- hdu 1421:搬寝室(动态规划 DP + 排序)
搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- hdu 2059:龟兔赛跑(动态规划 DP)
龟兔赛跑 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- Luogu 2627 修建草坪 (动态规划Dp + 单调队列优化)
题意: 已知一个序列 { a [ i ] } ,求取出从中若干不大于 KK 的区间,求这些区间和的最大值. 细节: 没有细节???感觉没有??? 分析: 听说有两种方法!!! 好吧实际上是等价的只是看 ...
- 动态规划DP入门
百度百科↓ 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法.20世纪50年代初美国数学家R.E.Bellman ...
随机推荐
- Visual Categorization with Bags of Keypoints
1.Introduction and backgrounds 作为本周的论文之一,这是一篇bag of features的基本文章之一,主要了解其中的基本思路,以及用到的基本技术,尽量使得细节更加清楚 ...
- linux系统下 git 使用教程
一.初始化 1.首先安装git软件,安装环境是centos 7.x下的云服务器.使用命令: #yum install git 2.设置用户名和邮箱(必须): # git config --global ...
- BZOJ 3524 Couriers | 主席树
BZOJ 3524 Couriers 题意 求一个区间内出现超过区间长度的一半的数,如果没有则输出0. 题解 我可能太菜了吧--这道题愣是没想出来-- 维护权值主席树,记录每个数都出现过多少次: 查询 ...
- 解题:洛谷 p1858 多人背包
题面 设$dp[i][j]$表示容量为$i$时的第$j$优解,因为是优解,肯定$dp[i][j]$是随着$j$增大不断递减的,这样的话对于一个新加进来的物品,它只可能从两个容量的转移的前$k$优解中转 ...
- Tcp协议三次握手四次挥手
一.什么是TCP TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6. 二.什 ...
- git<add的作用>
git add是个多功能的命令 1,跟踪: git add:跟踪当前目录下所有文件 git add <filename>:跟踪文件<filename> 2,暂存已修改的文件: ...
- 通过ORM模型看python对象创建过程
简易django ORM模型如下所示: #!/usr/bin/env python # encoding: utf-8 """ @version: 1.0 @author ...
- Java基础-StringBuffer类与StringBuilder类简介
Java基础-StringBuffer类与StringBuilder类简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.StringBuffer类 在学习过String类之后 ...
- python---requests和beautifulsoup4模块的使用
Requests:是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得 ...
- JavaScript中replace()方法的第二个参数解析
语法 string.replace(searchvalue,newvalue) 参数值 searchvalue 必须.规定子字符串或要替换的模式的 RegExp 对象.请注意,如果该值是一个字符串,则 ...