3049 舞蹈家怀特先生

 时间限制: 1 s
 空间限制: 64000 KB
 题目等级 : 黄金 Gold 

题目描述 Description

怀特先生是一个大胖子。他很喜欢玩跳舞机(Dance Dance Revolution, DDR),甚至希望有一天人家会脚踏“舞蹈家怀特先生”。可惜现在他的动作根本不能称作是在跳舞,尽管每次他都十分投入的表演。这也难怪,有他这样的体型,玩跳舞机是相当费劲的。因此,他希望写一个程序来安排舞步,让他跳起来轻松一些,至少不要每次都汗流浃背。
  DDR的主要内容是用脚来踩踏板。踏板有四个方向的箭头,用1 (Up)、2 (Left)、3 (Down)、4 (Right)来代表,中间位置由0来代表。每首歌曲有一个箭头序列,游戏者必须按照或这个序列一次用某一只脚踩相应的踏板。在任何时候,两只脚都不能在同一踏板上,但可以同时待在中心位置0。
  每一个时刻,它必须移动而且只能移动他的一只脚去踩相应的箭头,而另一只脚不许移动。跳完一首曲子之后,怀特先生会计算他所消耗的体力。从中心移动到任何一个箭头耗费2单位体力,从任何一个箭头移动到相邻箭头耗费3单位体力,移动到相对的箭头(1和3相对,2和4相对)耗费4单位体力,而留在原地再踩一下只需要1单位。怀特先生应该怎样移动他的双脚(即,对于每个箭头,选一只脚去踩它),才能用最少的体力完成一首给定的舞曲呢?
  例如,对于箭头序列Left (2), Left (2), Up (1), Right (4),他应该分别用左、左、右、右脚去踩,总的体力耗费为2+1+2+3=8单位。

输入描述 Input Description

第一行N,表示有N个时刻 1<=N<=10000
第二到n+1行,每行一个数,表示需要踩得版

输出描述 Output Description

一个数,最小消耗体力

样例输入 Sample Input

2

1

1

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

n<=10000

动态规划,f[k][i][j] 表示跳了k布,左脚在i,右脚在j,的最小步数,

所以分两种情况,要么左脚踩,要么右脚踩,

f[i][j][a[i]] = min(f[i][j][a[i]],f[i-1][j][k]+move(a[i],k));
f[i][a[i]][k] = min(f[i][a[i]][k],f[i-1][j][k]+move(a[i],j));(j,k∈(0,4))

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4
 5 using namespace std;
 6
 7 int f[10010][5][5];
 8 int a[10010];
 9 int n,m,ans=99999999;
10
11 int move(int a,int b)
12 {
13     if(a==b) return 1;
14     if(a==0||b==0) return 2;
15     if(a%2==b%2) return 4;
16     return 3;
17 }
18
19 int main()
20 {
21     scanf("%d",&n);
22     for (int i=1; i<=n; ++i)
23         scanf("%d",&a[i]);
24     memset(f,0x3f,sizeof(f));
25     f[0][0][0] = 0;
26     for (int k=1; k<=n; ++k)
27         for (int i=0; i<=4; ++i)
28             for (int j=0; j<=4; ++j)
29             {
30                 f[k][i][a[k]] = min(f[k][i][a[k]],f[k-1][i][j]+move(a[k],j));
31                 f[k][a[k]][j] = min(f[k][a[k]][j],f[k-1][i][j]+move(a[k],i));
32             }
33     for (int i=0; i<=4; ++i)
34         for (int j=0; j<=4; ++j)
35             ans = min(ans,f[n][i][j]);
36     printf("%d",ans);
37     return 0;
38 }

转载于:https://www.cnblogs.com/mjtcn/p/6914275.html

3049 舞蹈家怀特先生相关推荐

  1. 《算法艺术与信息学竞赛》题目-提交方式对照表 [转]

    id   title how2submit source page 1   盒子里的气球     8 2   图书馆 ural1188   9 3   钓鱼 uva757 pas 13 4   照亮的 ...

  2. 测试你的逻辑推理能力

    ★阿德里安.布福德和卡特三人去餐馆吃饭,他们每人要的不是火腿就 是猪排.如果阿德里安要的是火腿,那么布福德要的就是猪排.要火腿的不 是阿德里安就是卡特,但是不会两人都要火腿.布福德和卡特也不会两人都 ...

  3. Python ELM模型预测美国10个商店3049个商品销售量 ANN人工神经网络

    问题描述 美国有10个商店,每个商店有3049个商品,统计了1914天内各个商品的价格和销售数量,以及每天的属性(节日,打折活动等),通过构建非时序模型预测1914天-1941天各个商品销售数量,使用 ...

  4. matlab怀特检验,(求助)Eviews中的怀特检验,怎样确定存在异方差?

    请问各位路过的朋友,Eviews中做完回归后,用怀特检验进行异方差检验,怎样确定存在异方差?下面是截图,麻烦帮忙看下有没有异方差的存在.谢~~谢谢!! Heteroskedasticity Test: ...

  5. matlab怀特检验,Eviews8.0多元回归后怀特检验有异方差,如何修正?

    EXPO GDP DIS已经是lnExpo等 命名为EXPO等 Dependent Variable: EXPO Method: Least Squares Date: 05/07/16   Time ...

  6. java工资京舞蹈学院李雪,舞蹈家黄豆豆:带孩子比跳舞累多了(图)

    黄豆豆在<中国好舞蹈>节目中 正在浙江卫视热播的舞蹈评论节目<中国好舞蹈>中,除了引人注目的金星.海清.郭富城三大导师外,坐镇评论席的著名舞蹈家黄豆豆也引起了观众好奇.这位18 ...

  7. 对于养老,30-49岁人群更重视慢病管理,50岁及以上担心没有钱以及生活不能自理...

    北京2021年12月24日 /美通社/ -- 第七次全国人口普查数据显示,中国60岁以上人口超2.6亿,占总人口18.7%,其中65岁以上人群占总人口13.5%,这意味着,中国已迈入了老龄化社会.根据 ...

  8. 香港舞蹈家荣毅捷“回乡”办学记:民族的就是世界的

    中新网呼和浩特1月22日电 题:香港舞蹈家荣毅捷"回乡"办学记:民族的就是世界的 中新网记者 李爱平 图为荣毅捷近照.荣毅捷 提供 皮肤白皙.猜不出真实年龄的荣毅捷有两个故乡,一个 ...

  9. LOJ 3049: 洛谷 P5284: 「十二省联考 2019」字符串问题

    题目传送门:LOJ #3049. 题意简述: 给定一个长度为 \(n\) 的母串 \(S\). 有 \(n_a\) 个 A 类串,都是 \(S\) 的子串,以区间的形式给出. 有 \(n_b\) 个 ...

  10. 前端学习(3049):vue+element今日头条管理-请求获取数据

最新文章

  1. 用chattr保护文件系统的安全
  2. 027_Badge标记
  3. JS 得到时间的各个部分
  4. WCF完美搭建android平台服务之一
  5. PHP经典算法 (转载)
  6. 字符串是单一字符的无序组合吗_Python学习笔记(八)组合数据类型
  7. 总线与微命令实验总结_【干货】总线制?分线制?分不清楚看看这篇文章就知道了...
  8. 将ShaderToy中的Shader搬运到Unity
  9. Markdown 数学公式
  10. 总结下几个有漏洞第三方插件
  11. 微型计算机蓝屏的处理方法,电脑出现蓝屏如何解决_电脑蓝屏的处理方法
  12. 服务器U盘安装安装centos
  13. html病毒DropFileName,王国平博客-HTML 感染 DropFileName = “svchost.exe” Ramnit 蠕虫病毒 查杀解决办法...
  14. 【Numpy】用Python求解数独
  15. Python数据类型转换(str、float、int)
  16. 大陆移动手机卡开通国际漫游(港澳台)
  17. 别错过他们砍预算留给你的机会
  18. 程序员过高工资导致加班?应该降低程序员工资?网友:放过其他苦逼的程序员吧
  19. 「30天制作操作系统系列」1~4天从汇编到C语言
  20. 《看聊天记录都学不会C语言?太菜了吧》(4)零基础的我原来早就学会编程了?

热门文章

  1. (3)Matplotlib_subplot, subplots
  2. c语言输出所有英文字母,菜鸟求助,写一个随机输出26个英文字母的程序
  3. 清华大学操作系统OS学习(六)——进程和线程
  4. php url重写的模式,浅析ThinkPHP中的pathinfo模式和URL重写
  5. caffe的python接口学习(4):mnist实例---手写数字识别
  6. python批量运行py文件
  7. 区块链 solidity 零知识证明DApp开发实践【身份证明/以太坊】
  8. 会议直播方案 腾讯会议
  9. 数据结构和算法——中序线索化二叉树
  10. css布局的漂浮、position定位