您的位置:首页 > 其它

【解题报告】[动态规划]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

解题代码:

#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: