nyist 740 “炫舞家“ST(动态规划)
dp[i][j][k]:表示第i次踩踏后两脚的位置j,k
先固定一只脚的位置j,第i次踩踏后,状态为dp[i][j][a[i]]或者dp[i][a[i]][j],其中a[i]表示第i个输入的元素,则有状态方程:
x=dp[i-1][k][j]+cost[k][a[i]]; 是通过k踩过来的,cost[k][a[i]]表示k->a[i]的花费。
y=dp[i-1][j][k]+cost[k][a[i]]; 是通过k踩过来的,cost[k][a[i]]表示k->a[i]的花费。
dp[i][j][a[i]]=dp[i][a[i]][j]=min(x,y);
答案:ans=min(dp[n][j][a[i]])
#include <iostream>
#include <math.h>
using namespace std;
int a[10005],dp[10005][6][6];
int cost[6][6];
int main(int argc, char *argv[])
{
int i,j,k,ans,t,n,x,y;
while(cin>>t&&t)
{
a[1]=t;
for(n=2;;n++)
{
cin>>a[n];
if(!a[n]) break;
}
for(i=0;i<5;i++) for(j=0;j<5;j++) cost[i][j]=100000005;
cost[0][1]=cost[0][2]=cost[0][3]=cost[0][4]=2;
cost[1][2]=cost[2][1]=cost[2][3]=cost[3][2]=cost[3][4]=cost[4][3]=cost[4][1]=cost[1][4]=3;
cost[1][3]=cost[3][1]=cost[2][4]=cost[4][2]=4;
cost[1][1]=cost[2][2]=cost[3][3]=cost[4][4]=1;
for(i=0;i<=n;i++) for(j=0;j<5;j++) for(k=0;k<5;k++) dp[i][j][k]=100000005;
dp[0][0][0]=0;ans=100000005;
for(i=1;i<n;i++)
{
for(j=0;j<5;j++)//没动的脚
{
if(j==a[i]) continue;
x=y=100000005;
for(k=0;k<5;k++) //左脚踩
{
if(k!=j||k+j==0) if(x>dp[i-1][k][j]+cost[k][a[i]]) x=dp[i-1][k][j]+cost[k][a[i]];
}
for(k=0;k<5;k++) //右脚踩
{
if(k!=j||k+j==0) if(y>dp[i-1][j][k]+cost[k][a[i]]) y=dp[i-1][j][k]+cost[k][a[i]];
}
if(x>y) x=y;
dp[i][j][a[i]]=dp[i][a[i]][j]=x;
//cout<<i<<" -> "<<a[i]<<" -> "<<j<<" "<<dp[i][a[i]][j]<<endl;
if(ans>dp[n-1][j][a[i]]) ans=dp[n-1][j][a[i]];
}
}
cout<<ans<<endl;
}
return 0;
}
nyist 740 “炫舞家“ST(动态规划)的更多相关文章
- nyoj 740 “炫舞家“ST
“炫舞家“ST 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 ST是一个酷爱炫舞的玩家.TA很喜欢玩QQ炫舞,因此TA也爱屋及乌的喜欢玩跳舞机(Dance Dance ...
- NYOJ 炫舞家st
#include <iostream>#include <cstring>#include <algorithm>using namespace std; cons ...
- Java 炫舞按键功能 DancingPlay (整理)
/** * Java 炫舞按键功能 DancingPlay (整理) * 2016-1-2 深圳 南山平山村 曾剑锋 * * 设计声明: * 1.本次设计是模仿QQ炫舞类游戏,当图标到红色的检测区域时 ...
- 微信游戏《全民炫舞》开发公司h3d2 engine和QQ炫舞2 布料系统技术介绍
H3D公司开发的<全民炫舞>上线了. 蝉联IOS榜首很多天. 整理了一下过去公司游戏引擎开发的历史.有兴趣可以去看看 公司游戏引擎开发历史介绍: http://www.h3d.com.cn ...
- 内行看门道:看似“佛系”的《QQ炫舞手游》,背后的音频技术一点都不简单
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云发表于云+社区专栏 3月14日,腾讯旗下知名手游<QQ炫舞>正式上线各大应用商店,并迅速登上App Store免 ...
- nyist oj 311 全然背包 (动态规划经典题)
全然背包 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 直接说题意,全然背包定义有N种物品和一个容量为V的背包.每种物品都有无限件可用.第i种物品的体积是c,价值是 ...
- nyist oj 37 回文字符串 (动态规划经典)
回文字符串 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 所谓回文字符串,就是一个字符串.从左到右读和从右到左读是全然一样的.比方"aba".当 ...
- QQ炫舞官网选项卡效果
这篇博文里需要注意的是当点击事件发生的时候,需要用循环,重置标题的classname和标题底部都设置成隐藏,当点击的时候在加上标题的active属性和显示属性 代码地址:https://github. ...
- 【转载】QQ炫舞手游自制谱子教程(星动模式)
第一步:计算ET和BPM: 抄送原作者部落链接:https://buluo.qq.com/p/detail.html?bid=368006&pid=981862-1529828677& ...
随机推荐
- iOS 计算两个日期之间的天数问题
//获取当前时间若干年.月.日之后的时间 + (NSDate *)dateWithFromDate:(NSDate *)date years:(NSInteger)years months:(NSIn ...
- iOS开发-自动布局篇:史上最牛的自动布局教学!
转载自:http://www.jianshu.com/p/f6cf9ef451d9 本文我们将提到: aotulayout(手码) VFL aotulayout(Xib) Masonry(第三方框架) ...
- 堆排序的OC实现
/* 建议先看堆调整方法,堆调整了解了,整个排序算法就算掌握了 */ - (void)viewDidLoad { [super viewDidLoad]; /* 测试数据 */ NSArray *ar ...
- C#冒泡排序法程序代码
using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Console ...
- 摘录android工具类
import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.Pac ...
- 10.13_extjs,combox,效率为什么这么低
(1)今天很累!经过三天的奋斗,终于完成了完全最优界面的快捷选址功能.今天是最后一天,最紧张,也最累. 为何我的效率不高呢?!我的时间都花费到哪儿呢?①阅读代码理解过去的逻辑:②关键技术上的再复习再巩 ...
- ISO 学习笔记 2015-03-15
Objective--C 一 关键字 @property 定义变量函数 @synthesize 实现变量函数 二 函数 alloc 分配内存 init 初始化 new 替代上面两个函数 分配内存,并且 ...
- 配置trac
1. enable apache mod_auth_digest 2. 设置Location
- 一个开源的可视化的jQuery工作流插件
特点 1.跨浏览器,可兼容IE7--IE11, FireFox, Chrome, Opera等几大内核的浏览器,且不需要浏览器再加装任何控件. (IE7-IE8时,使用VML:IE9以上,FF,OPE ...
- Building Python 2.7.10 with Visual Studio 2010 or 2015 - Google Chrome
您的浏览器(Chrome 33) 需要更新.该浏览器有诸多安全漏洞,无法显示本网站的所有功能. 了解如何更新浏览器 × p-nand-q.com C++ Python Programming L ...