3049 舞蹈家怀特先生
3049 舞蹈家怀特先生
怀特先生是一个大胖子。他很喜欢玩跳舞机(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单位。
第一行N,表示有N个时刻 1<=N<=10000
第二到n+1行,每行一个数,表示需要踩得版
一个数,最小消耗体力
2
1
1
3
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 舞蹈家怀特先生相关推荐
- 《算法艺术与信息学竞赛》题目-提交方式对照表 [转]
id title how2submit source page 1 盒子里的气球 8 2 图书馆 ural1188 9 3 钓鱼 uva757 pas 13 4 照亮的 ...
- 测试你的逻辑推理能力
★阿德里安.布福德和卡特三人去餐馆吃饭,他们每人要的不是火腿就 是猪排.如果阿德里安要的是火腿,那么布福德要的就是猪排.要火腿的不 是阿德里安就是卡特,但是不会两人都要火腿.布福德和卡特也不会两人都 ...
- Python ELM模型预测美国10个商店3049个商品销售量 ANN人工神经网络
问题描述 美国有10个商店,每个商店有3049个商品,统计了1914天内各个商品的价格和销售数量,以及每天的属性(节日,打折活动等),通过构建非时序模型预测1914天-1941天各个商品销售数量,使用 ...
- matlab怀特检验,(求助)Eviews中的怀特检验,怎样确定存在异方差?
请问各位路过的朋友,Eviews中做完回归后,用怀特检验进行异方差检验,怎样确定存在异方差?下面是截图,麻烦帮忙看下有没有异方差的存在.谢~~谢谢!! Heteroskedasticity Test: ...
- matlab怀特检验,Eviews8.0多元回归后怀特检验有异方差,如何修正?
EXPO GDP DIS已经是lnExpo等 命名为EXPO等 Dependent Variable: EXPO Method: Least Squares Date: 05/07/16 Time ...
- java工资京舞蹈学院李雪,舞蹈家黄豆豆:带孩子比跳舞累多了(图)
黄豆豆在<中国好舞蹈>节目中 正在浙江卫视热播的舞蹈评论节目<中国好舞蹈>中,除了引人注目的金星.海清.郭富城三大导师外,坐镇评论席的著名舞蹈家黄豆豆也引起了观众好奇.这位18 ...
- 对于养老,30-49岁人群更重视慢病管理,50岁及以上担心没有钱以及生活不能自理...
北京2021年12月24日 /美通社/ -- 第七次全国人口普查数据显示,中国60岁以上人口超2.6亿,占总人口18.7%,其中65岁以上人群占总人口13.5%,这意味着,中国已迈入了老龄化社会.根据 ...
- 香港舞蹈家荣毅捷“回乡”办学记:民族的就是世界的
中新网呼和浩特1月22日电 题:香港舞蹈家荣毅捷"回乡"办学记:民族的就是世界的 中新网记者 李爱平 图为荣毅捷近照.荣毅捷 提供 皮肤白皙.猜不出真实年龄的荣毅捷有两个故乡,一个 ...
- LOJ 3049: 洛谷 P5284: 「十二省联考 2019」字符串问题
题目传送门:LOJ #3049. 题意简述: 给定一个长度为 \(n\) 的母串 \(S\). 有 \(n_a\) 个 A 类串,都是 \(S\) 的子串,以区间的形式给出. 有 \(n_b\) 个 ...
- 前端学习(3049):vue+element今日头条管理-请求获取数据
最新文章
- 用chattr保护文件系统的安全
- 027_Badge标记
- JS 得到时间的各个部分
- WCF完美搭建android平台服务之一
- PHP经典算法 (转载)
- 字符串是单一字符的无序组合吗_Python学习笔记(八)组合数据类型
- 总线与微命令实验总结_【干货】总线制?分线制?分不清楚看看这篇文章就知道了...
- 将ShaderToy中的Shader搬运到Unity
- Markdown 数学公式
- 总结下几个有漏洞第三方插件
- 微型计算机蓝屏的处理方法,电脑出现蓝屏如何解决_电脑蓝屏的处理方法
- 服务器U盘安装安装centos
- html病毒DropFileName,王国平博客-HTML 感染 DropFileName = “svchost.exe” Ramnit 蠕虫病毒 查杀解决办法...
- 【Numpy】用Python求解数独
- Python数据类型转换(str、float、int)
- 大陆移动手机卡开通国际漫游(港澳台)
- 别错过他们砍预算留给你的机会
- 程序员过高工资导致加班?应该降低程序员工资?网友:放过其他苦逼的程序员吧
- 「30天制作操作系统系列」1~4天从汇编到C语言
- 《看聊天记录都学不会C语言?太菜了吧》(4)零基础的我原来早就学会编程了?