HDU6739 Invoker 【dp】
2024-10-05 07:58:19
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6739
借鉴了这个网址的题解:https://blog.csdn.net/qq_41785863/article/details/101676640
题意:每个大写字母代表一个技能,每个技能都由三个法球组成(无序的)。现在给出一串技能字符串,要求求出释放所有技能所需的最小按键次数、每输入一个法球按键一次,释放技能时需要按键一次(R)。
思路:因为技能的组成是无序的,也就是每个技能有6种组合方式,可以全部枚举出来。后一个技能也可以全部枚举出来,这样找到相邻技能36种组合中,链接起来时,法球数目最少的。即可以得到我们的状态转移方程。
dp[i][j]表示以j组合形式释放第i种技能时的最少按键次数。
代码如下:
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<map>
#include<algorithm>
#define mem(a, b) memset(a, b, sizeof(a))
const int MAXN = 1e5 + ;
const int inf = 0x3f3f3f3f;
using namespace std; map<char, string> mp;
char s[MAXN];
int dp[MAXN][];
int dir[][] = {, , ,
, , ,
, , ,
, , ,
, , ,
, , }; int cal(string s, string s1, int x, int y)
{
int ret;
if(s[dir[x][]] == s1[dir[y][]] && s[dir[x][]] == s1[dir[y][]] && s[dir[x][]] == s1[dir[y][]]) ret = ;
else if(s[dir[x][]] == s1[dir[y][]] && s[dir[x][]] == s1[dir[y][]]) ret = ;
else if(s[dir[x][]] == s1[dir[y][]]) ret = ;
else ret = ;
return ret;
} int main()
{
mp['Y'] = "QQQ", mp['V'] = "QQW", mp['G'] = "QQE", mp['C'] = "WWW";
mp['X'] = "QWW", mp['Z'] = "WWE", mp['T'] = "EEE", mp['F'] = "QEE";
mp['D'] = "WEE", mp['B'] = "QWE"; while(scanf("%s", s + ) != EOF)
{
int len = strlen(s + );
mem(dp, inf);
for(int i = ; i < ; i ++)
dp[][i] = ;
for(int i = ; i <= len; i ++)
for(int j = ; j < ; j ++)
for(int k = ; k < ; k ++)
dp[i][j] = min(dp[i][j], dp[i - ][k] + cal(mp[s[i - ]], mp[s[i]], k, j) + );
int ans = inf;
for(int i = ; i < ; i ++)
ans = min(ans, dp[len][i]);
printf("%d\n", ans);
}
return ;
}
最新文章
- Windows Server 2003安装方法
- 好用的第三方控件,Xcode插件(不断更新)
- Javascript技巧
- Hive性能优化
- Android 之 Intent(意图)
- 利用gitbash上传项目到github
- java System.out
- Go运行环境搭建(Mac\Linux)
- Queryable.GroupBy<;TSource, TKey>; 方法 (IQueryable<;TSource>;, Expression<;Func<;TSource, TKey>;>;) 转
- 【USACO 2.4.1】两只塔姆沃斯牛
- OC 调用JS 代码 处理HTML5 实战
- spring-boot-2.0.3源码篇 - @Configuration、Condition与@Conditional
- SMS PDU编码数据串格式分析
- vue脚手架 构建豆瓣App 第一天
- css3 制作一个遮罩
- div中的img垂直居中的方法,最简单! 偷学来的,,,不要说我抄袭啊(*^__^*)
- 20155316 《网络对抗》Exp8 Web基础
- 转载:Linux批量远程管理主机命令_pssh用法详解
- Springboot中静态资源和拦截器处理(踩了坑)
- bzoj 4025 二分图——线段树分治+LCT
热门文章
- 005_STM32程序移植之_RC522读卡模块
- Chrome浏览器设置自动启用Flash插件
- python 改变函数实参的值
- 2019 Multi-University Training Contest 10
- include指令与jsp:include动作标识的区别
- Flask 编写一个授权登录验证的模块(一)
- 令人窒息的操作,nodejs面向对象。
- Maven Web项目出现org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException错误
- python 库 imgaug数据增强
- linux下添加动态链接库路径、动态库加载等方法