意甲冠军:跳舞机有一个上5积分,分别central, top, bottom, left, right分,区区足站立还是需要1点物理,从一个单纯的脚central点上须要2点体力,从一个点上移动到相邻的点上须要3点体力,从一个点移动到对面的点上须要4点体力,初始的时候双脚都在central点上,给出一系列的舞步,求最少须要多少的体力来完毕.

思路:设dp[k][i][j]为在第k个舞步的时候,左右脚分别在i,j点上的最少体力.

转移的时候仅仅需考虑从上一个舞步的左脚还是右脚到当前舞步,详细就看程序里吧, 用了滚动数组.

#include <cstdio>
#include <algorithm>
#include <memory.h>
using namespace std;
const int MAX = 5;
int dp[2][MAX][MAX]; inline bool is_opposite(int i, int j){
return i == 1 && j == 3 || i == 2 && j == 4;
}
inline int consumption(int i, int j){
if(i == j)return 1;
else if(i == 0)return 2;
else if(is_opposite(i, j) || is_opposite(j, i))return 4;
else return 3;
}
int main(int argc, char const *argv[]){
int side;
while(scanf("%d", &side) && side){
int f = 1, ans = 0x20202020; memset(dp, 0x20, sizeof(dp));
dp[0][0][0] = 0;
do{
//move the left foot
for(int i = 0; i <= 4; ++i){
for(int j = 0; j <= 4; ++j){
if(side != j){
dp[f][side][j] = min(dp[f][side][j], dp[f ^ 1][i][j] + consumption(i, side));
}
}
}
//move the right foot
for(int i = 0; i <= 4; ++i){
for(int j = 0; j <= 4; ++j){
if(side != i){
dp[f][i][side] = min(dp[f][i][side], dp[f ^ 1][i][j] + consumption(j, side));
}
}
}
scanf("%d", &side);
f ^= 1;
memset(dp[f], 0x20, sizeof(dp[f]));
}while(side); printf("%d\n", *min_element(&dp[f ^ 1][0][0], &dp[f ^ 1][4][4]));
}
return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

UVA 1291 Dance Dance Revolution(DP)的更多相关文章

  1. 递推DP UVA 1291 Dance Dance Revolution

    题目传送门 题意:给一串跳舞的动作,至少一只脚落到指定的位置,不同的走法有不同的体力消耗,问最小体力消费多少分析:dp[i][j][k] 表示前i个动作,当前状态(j, k)的最小消费,状态转移方程: ...

  2. UVA 1291 十四 Dance Dance Revolution

    Dance Dance Revolution Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Su ...

  3. [LA] 2031 Dance Dance Revolution

    Dance Dance Revolution Time limit: 3.000 seconds Mr. White, a fat man, now is crazy about a game nam ...

  4. Dance Dance Revolution

    今天我们来讲 Dance Dance Revolution这题 本题原网址 注意本题为多组输入输出,直到输入单个零而止(题面有点小问题) 很明显,此题为一道动态规划题(请不要妄想用贪心算法过这题,尽管 ...

  5. UVA.10066 The Twin Towers (DP LCS)

    UVA.10066 The Twin Towers (DP LCS) 题意分析 有2座塔,分别由不同长度的石块组成.现在要求移走一些石块,使得这2座塔的高度相同,求高度最大是多少. 问题的实质可以转化 ...

  6. UVA 10003 Cutting Sticks 区间DP+记忆化搜索

    UVA 10003 Cutting Sticks+区间DP 纵有疾风起 题目大意 有一个长为L的木棍,木棍中间有n个切点.每次切割的费用为当前木棍的长度.求切割木棍的最小费用 输入输出 第一行是木棍的 ...

  7. UVALive - 2031 Dance Dance Revolution 三维dp

    题目大意:有一个胖子在玩跳舞机.刚開始的位置在(0,0).跳舞机有四个方向键,上左下右分别相应1,2,3,4.如今有下面规则 1.假设从0位置移动到随意四个位置,消耗能量2 2.假设从非0位置跳到相邻 ...

  8. UVA1291----Dance Dance Revolution----3维DP

    本文出自:http://blog.csdn.net/dr5459 题目地址: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&a ...

  9. 2000 Asia shanghai Dance Dance Revolution

    思路:dp[i][x][y]表示第i个序列中,右脚在x位置,左脚在y位置时,其最小花费. 那么dp[i][x][y]=min(dp[i-1][a[i]][y]+cost[a[i]][x],dp[i-1 ...

随机推荐

  1. 使用yiic安装开发web应用和解决yiic不是内部命令

    使用yii创建应用程序,推荐博客:http://www.cnblogs.com/waitingbar/archive/2013/02/28/2937308.html 把php.exe加入为系统环境变量 ...

  2. windows server 搭建radius服务器

    使用ISA 2004搭建PPTP/L2TP 服务器后,VPN账号是在radius服务器上的,使用window server 2003搭建radius服务器,需要添加组件->internet验证服 ...

  3. VS2010升级VS2013后,出现没有定义类型“PowerPacks.ShapeContainer”错误解决方法

    开发说明: http://msdn.microsoft.com/zh-tw/library/microsoft.visualbasic.powerpacks.aspx Microsoft.Visual ...

  4. python面向对象具体解释(上)

    创建类 Python 类使用 class 关键字来创建.简单的类的声明能够是关键字后紧跟类名: class ClassName(bases): 'class documentation string' ...

  5. 软考之CPU的寻址方式

    在复习软考的时候,发现CPU的内部工作原理这一部分的内容挺重要的,现对CPU的寻址方式进行了一下总结.以下就来一一介绍一下. 我们都知道一个指令分为操作码和地址码两部分.操作码确定指令的类型.地址码确 ...

  6. UVA 1513 - Movie collection(树状数组)

    UVA 1513 - Movie collection option=com_onlinejudge&Itemid=8&page=show_problem&category=5 ...

  7. GPS 偏移校正(WGS-84) 至(GCJ-02) java版本号以实现

    public class EvilTransform { final static double pi = 3.14159265358979324; // // // a = 6378245.0, 1 ...

  8. 小米2S TWRP 3.0.2-0 最新中文版本Recovery

    注意:此版本为合并分区后的twrp  小米2S 合并分区教程:http://forum.xda-developers.com/mi-2/orig-development/flashtools-mifl ...

  9. 小米2S TWRP 3.0.2-0 最新版Recovery

    主界面 使用了我最新修改的内核 下载地址: 链接: http://pan.baidu.com/s/1i5xwddb 密码: 7dyb 验证信息: md5sum: dca410f33020eb87986 ...

  10. hdu 4557 非诚勿扰 vector的应用 原来vector 可以删除指定位置元素 不过消耗大

    非诚勿扰 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submi ...