本文出自   http://blog.csdn.net/shuangde800

题目:点击打开链接

题目大意

如上图,这是一个跳舞机,初始状态两个脚都在0,  状态表示为(0, 0), 然后跳舞机会给你一系列舞步方向,例如2,3,4,2,3.......

每次你必须选择一只脚移动到对应数字方向的各格子上。

例如从初始状态(0,0),要移到1, 可以选择左脚或者右脚移上去,对应的状态为(1, 0), (0,1)

有一个限制,除了初始状态可以是(0, 0),之后的两只脚就不能再同时在一个格子上!

移动脚要耗费体力, 从0移动到其它各自都是耗费2, 从1,2,3,4之间,如果是移动到相邻的格子,比如1->2, 1->4, 3->2, 4->3,耗费体力3

如果是移动到对面的格子,比如1->3, 2->4,耗费体力4。

如果某一步,停止不动,耗费体力1

给一串方向,问最少用多少体力可以完成这些动作?

思路

f(i, j, k), 表示第i步,状态为(j,k)时花费的最少体力
那么不难推出转移方程式:

假设当前这个舞步是在s,那么符合这一步的所有状态有:
f(i, 0..4, s),  f(i, s, 0...4)

然后可以根据上面的状态推出下一舞步的最少体力话费

假设下一舞步是next

那么

如果f(i, j, s), (0<=j<=4)状态可达
则可推出下一个的状态
f(i+1, j, s) = f(i, j, k) + 1; // 停在当前不动
f(i+1, next, s) = min{ f(i, j, s) + consume(j, next)}
f(i+1, j, next) = min{ f(i, j, s) + consume(s, next)}

同理,如果f(i, s, j), (0<=j<=4)状态可达
也可推出下一个状态:
f(i+1, s, j) = f(i, j, k) + 1; // 停在原地不动
f(i+1, next, j) = min{ f(i, s, j) + consume(s, next)}
f(i+1, s, next) = min{ f(i, s, j) + consume(j, next)}

代码

转载于:https://www.cnblogs.com/bbsno1/p/3253715.html

uva 1291 - Dance Dance Revolution ( dp )相关推荐

  1. uva 1218 Perfect Service 树形dp

    // uva 1218 Perfect Service 树形dp // // 解题思路: // // d[u][0]表示节点本身是服务器 // d[u][1]表示节点的父节点是服务器 // d[u][ ...

  2. UVa 103 - Stacking Boxes(dp求解)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...

  3. uva 10859 放置街灯树形dp

    首先,本题的优化目标有两个:放置的街灯a应该尽量少:被两灯同时照亮的边数b应该尽量大.为了统一起见,我们把后者替换为:恰好被一盏灯照亮的边数c应该尽量小,然后改用x = Ma+c作为优化目标,其中一个 ...

  4. UVA - 1218 Perfect Service(树形dp)

    题目链接:UVA - 1218 Perfect Service 题意 有n台电脑,互相以无根树的方式连接,现要将其中一部分电脑作为服务器,且要求每台电脑必须连接且只能连接一台服务器(不包括作为服务器的 ...

  5. UVA 10074 Take the Land dp/暴力+剪枝

    原题传送门:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...

  6. Uva 10074【递推dp】

    UVa 10074 题意:求01矩阵的最大子0矩阵. http://www.csie.ntnu.edu.tw/~u91029/MaximumSubarray.html#2 这里说的很清楚.先求Larg ...

  7. uva 10401 Injured Queen Problem(dp)

    题目链接:10401 - Injured Queen Problem 题目大意:给出一个字符串,要求在n * n(n为字符串的长度)的棋盘上摆放n个受伤的皇后,受伤的皇后只能攻击到同一列和它周围8个格 ...

  8. UVA 11578 - Situp Benches(dp)

    题目链接:11578 - Situp Benches 题意:健♂身♂房有两个仰卧起坐坐垫,每次调整角度要花费10元/10度,每次使用要花费15,如今给定n个人的时间顺序,和所希望的角度,求最少花费 思 ...

  9. UVa 1632 阿里巴巴(区间DP)

    https://vjudge.net/problem/UVA-1632 题意: 直线上有n个点,其中第i个点的坐标是xi,且它会在di秒之后消失.Alibaba可以从任意位置出发,求访问完所有点的最短 ...

最新文章

  1. 雷军 1994 年写的代码,经典老古董~
  2. mysql 多表查询实例讲解_mysql多表连接查询实例讲解
  3. Qt 程序获取各种文件路径方法
  4. 用python做一个简单的投票程序_以一个投票程序的实例来讲解Python的Django框架使...
  5. javafx8配置参数列表
  6. 【Java】Java StreamCorruptedException: invalid stream header: EFBFBDEF
  7. 【TI-ONE系列教程(五)】如何使用 TI-ONE SDK 玩转算法大赛
  8. Linux中Docker部署Tomcat
  9. 某台机器上IE8抛“Invalid procedure call or argument”异常
  10. 好的串行代码与好的并行代码的区别(Zz)
  11. 机器学习梯度下降举例_举例说明:机器学习
  12. 暗黑破坏神2 符文自动合成--按键精灵源码
  13. Top 10 JavaScript编辑器,你在用哪个?
  14. Ubuntu设置快捷键截图
  15. Win11启动IE浏览器
  16. 【2020年高被引学者】 朱松纯 北京大学
  17. 氨基-八聚乙二醇Amino-PEG8-alcohol,352439-37-3
  18. 微服务之间单点登录和用户权限认证的实现
  19. 8、ARM嵌入式系统:UART初始化
  20. 架构方案(16) 常见分布式文件存储介绍、选型比较、以及架构设计

热门文章

  1. ucosii 如何确定定时器的时间_全国中小学寒假时间确定,家长如何安排孩子们假期更合理?...
  2. vue 深度拷贝数组_前端深拷贝和浅拷贝
  3. OPencv_边缘检测算法
  4. 电脑主板接口_电脑主板接口大全
  5. python 反爬机制_python3爬虫--反爬虫应对机制
  6. 数字图像识别笔记(第一章绪论)
  7. Python三:面向对象 之 类的封装
  8. python处理数据集并制作词云图
  9. Spring源码分析之Aop中拦截器,适配器,通知之间的关系
  10. 支持js代码的博客有哪些?