【解题报告】[动态规划]RQNOJ - PID82 / 又上锁妖塔
2014-05-08 19:52
260 查看
原题地址:http://www.rqnoj.cn/problem/82
解题思路:
简单的动态规划
状态表示:DP[i][0]表示当前在第i层,且当前跳跃状态不可用,此时消耗的最短时间。
DP[i][1]表示当前在第i层,且当前跳跃状态可用,此时消耗的最短时间。
状态转移方程:
DP[i][0]=min(DP[i-1][1],DP[i-2][1]);
DP[i][1]=min(DP[i-1][0],DP[i-1][1])+t[i-1];
初始状态:
DP[0][0]=INF
DP[0][1]=0
解题代码:
View Code
解题思路:
简单的动态规划
状态表示:DP[i][0]表示当前在第i层,且当前跳跃状态不可用,此时消耗的最短时间。
DP[i][1]表示当前在第i层,且当前跳跃状态可用,此时消耗的最短时间。
状态转移方程:
DP[i][0]=min(DP[i-1][1],DP[i-2][1]);
DP[i][1]=min(DP[i-1][0],DP[i-1][1])+t[i-1];
初始状态:
DP[0][0]=INF
DP[0][1]=0
解题代码:
#include<stdio.h> #include<iostream> using namespace std; int t[10005],n; int dp[10005][2]; int min(int x,int y) { return x<y?x:y; } int main() { int i; cin>>n; for(i=0;i<n;i++) { scanf("%d",&t[i]); } dp[0][1]=0; dp[1][0]=0; dp[1][1]=t[0]; for(i=2;i<=n;i++) { dp[i][0]=min(dp[i-1][1],dp[i-2][1]); dp[i][1]=min(dp[i-1][0],dp[i-1][1])+t[i-1]; //printf("%d %d\n",dp[i][0],dp[i][1]); } printf("%d\n",min(dp [0],dp [1])); return 0; }
View Code
相关文章推荐
- 【解题报告】[动态规划]RQNOJ - PID72 / 拔河比赛
- 【解题报告】[动态规划] RQNOJ PID106 / 最大加权矩形
- 【解题报告】[动态规划] RQNOJ - PID273 / 马棚问题
- 【解题报告】[动态规划] RQNOJ - PID105 / 核电站问题
- 【解题报告】[动态规划] RQNOJ - PID38 / 串的记数
- 【解题报告】[动态规划] RQNOJ - PID15 / 采药
- 【解题报告】[动态规划]RQNOJ PID2 / 开心的金明
- 【解题报告】[动态规划] RQNOJ PID5 / 能量项链
- 【解题报告】[动态规划] - PID90 / 未出现的子串
- 【解题报告】[动态规划]-PID69 / 过河卒
- SDUT 3014 硬币问题 (动态规划) -- 解题报告
- RQNOJ 341 星门跳跃【解题报告】
- RQNOJ 389 心灵的抚慰【解题报告】
- POJ 1458(最长公共子序列 动态规划) 解题报告
- 动态规划之01背包详解【解题报告】
- 1163 动态规划 解题报告
- 一中OJ #1457 越大越聪明[Uva 10131 -> Is Bigger Smarter?] | 动态规划 字典序LIS | 解题报告
- 【原】 POJ 1141 Brackets Sequence 动态规划 解题报告
- POJ 1458(最长公共子序列 动态规划) 解题报告
- 0-1背包问题,poj 3624 Charm Bracelet动态规划-解题报告,增加最优路径构建