题意:

连续3个特定的按键(在这3个中不要求顺序)能使出某个技能,使出不同技能所需要的按键可以重叠,给你一个技能序列,问你最少花费多少次按键能按顺序使出这些招数。

题解:

dp,dp[i][j]代表使出第i个技能后,最后3个按键组合是j的最少需要按键数,暴力枚举即可。

思路比较绕,实际码的时候很自闭。

#include<bits/stdc++.h>
using namespace std;
#define MAXN 100000+50
char s[MAXN];
string jineng[][]={
{"QQQ","QQQ","QQQ","QQQ","QQQ","QQQ"},
{"QQW","QQW","QWQ","QWQ","WQQ","WQQ"},
{"QQE","QQE","QEQ","QEQ","EQQ","EQQ"},
{"WWW","WWW","WWW","WWW","WWW","WWW"},
{"QWW","QWW","WQW","WQW","WWQ","WWQ"},
{"WWE","WWE","WEW","WEW","EWW","EWW"},
{"EEE","EEE","EEE","EEE","EEE","EEE"},
{"QEE","QEE","EQE","EQE","EEQ","EEQ"},
{"WEE","WEE","EEW","EEW","EWE","EWE"},
{"QWE","QEW","WEQ","WQE","EWQ","EQW"}
};
//CXZTFDB
int num[];
int dp[MAXN][];
int get_dif(int id1,int id2,int pos1,int pos2)
{
if(jineng[id1][pos1][]==jineng[id2][pos2][]&&jineng[id1][pos1][]==jineng[id2][pos2][]
&&jineng[id1][pos1][]==jineng[id2][pos2][])
return ;
if(jineng[id1][pos1][]==jineng[id2][pos2][]&&jineng[id1][pos1][]==jineng[id2][pos2][])
return ;
if(jineng[id1][pos1][]==jineng[id2][pos2][]) return ;
return ;
}
int main()
{
int ans;
scanf("%s",s);
int len=strlen(s);
ans=len*;
memset(num,,sizeof(num));
num['Y']=,num['V']=,num['G']=,num['C']=,
num['X']=,num['Z']=,num['T']=,num['F']=,
num['D']=,num['B']=;
for(int i=;i<len;++i)
for(int j=;j<;++j)
dp[i][j]=len*;
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]+get_dif(num[s[i-]],num[s[i]],k,j));
}
for(int i=;i<;++i) ans=min(ans,dp[len-][i]);
cout<<ans+len<<endl;
}

2019ccpc秦皇岛/Gym102361 I - Invoker dp的更多相关文章

  1. 2019CCPC秦皇岛I题 Invoker(DP)

    Invoker Time Limit: 15000/12000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  2. HDU6739 2019CCPC秦皇岛赛区 I. Invoker

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6739思路:暴力dp           一个special skill最多有6种排列组合          ...

  3. 2019ccpc秦皇岛/Gym102361 D - Decimal 签到

    题意: 给定n,判断1/n是否在十进制下无限循环 题解:判断n的是否包含除2,5以外的因数即可 #include<iostream> #include<cstdio> #inc ...

  4. 2019ccpc秦皇岛/Gym102361 F Forest Program 仙人掌上dfs

    题意: 某地沙漠化严重,沙漠里长了很多仙人掌,现在要让你删掉仙人掌的一些边让它的所有连通分量都是树,就完成了沙漠绿化(什么鬼逻辑?)让你计算删边的方案数. 仙人掌是一种特殊的图,它的每一条边只属于1或 ...

  5. 2019-ccpc秦皇岛现场赛

    https://www.cnblogs.com/31415926535x/p/11625462.html 昨天和队友模拟了下今年秦皇岛的区域赛,,,(我全程在演 题目链接 D - Decimal 签到 ...

  6. 2019CCPC秦皇岛赛区(重现赛)- I

    链接: http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1009&cid=872 题意: 在 dota2 中有一个叫做祈求 ...

  7. 2019CCPC秦皇岛自我反省&部分题解

    练了一年半了,第一次打CCPC,险些把队友坑了打铁,最后也是3题危险捡了块铜. 非常水的点双连通,我居然不相信自己去相信板子,唉,结果整来整去,本来半个小时能出的题,整到了3个小时,大失误呀,不然就可 ...

  8. 2018 CCPC 秦皇岛 I (状压DP)

    题意: 首先t组数据  (t<=5),一个n代表有n件东西,每个东西可以代表两个物品,商品或者袋子,每个都有个值,如果这个要代表袋子的话,当前就代表是容量,而且必须把其他几件不是袋子的物品放一些 ...

  9. 2019CCPC秦皇岛 E题 Escape(网络流)

    Escape Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Su ...

随机推荐

  1. sdb报告-10 错误问题定位

    # sdb报告-10 错误问题定位在sdb 的集群环境中,如果面对的是一个高并发的操作场景,有时候会莫名其妙地报告 -10 错误. 在 sdb 的错误列表中,-10 错误代表:系统错误. 这是一个笼统 ...

  2. ES6 Generator使用

    // generator介绍: function* hello() { console.log("hello world") } hello();//没有执行 // 直接调用hel ...

  3. selenium2-java 浏览器不同窗口切换

    1,获取浏览器的单个窗口:         String parentWindowid =  driver.getWindowHandle();         System.out.println( ...

  4. 解决让刷新页面时不提示 "重试或取消”对话框

    如果刷新一个已经提交过的页面时,系统总是会提示一个 "重试或取消”的对话框.,如果是一个普通的页面,好象也无所谓,有就有,大不了多点一下.但是当我们是在子窗体中刷新父窗体时,就显得有点多余了 ...

  5. https中引用http

    https里引用http不安全,会报错 解决方案 1.可以部署在http中,http中引用https不会存在安全问题报错 2.https中引用https,把需要引用的http部署成https

  6. 利用float与overflow:hidden实现移动端两栏自适应布局

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Mutable and Immutable Variables in Python

    本文解决python中比较令人困惑的一个小问题:传递到函数中的参数若在函数中进行了重新赋值,对于函数外的原变量有何影响.看一个小栗子: def fun(a): a=2 return a=1 fun(a ...

  8. maven(二),Linux安装maven3.5.3及配置

    Linux系统,ubuntu-16.04.4,安装maven3.5.3 一.创建文件夹 注意Linux用户,这个如果不是root用户,命令前面需要加:sudo //创建一个目录 mkdir /usr/ ...

  9. Python 学习笔记14 类 - 使用类和实例

    当我们熟悉和掌握了怎么样创建类和实例以后,我们编程中的大多数工作都讲关注在类的简历和实例对象使用,修改和维护上. 结合实例我们来进一步的学习类和实例的使用: 我们新建一个汽车的类: #-*- codi ...

  10. C语言深度剖析自测题8解析

    #include <stdio.h> int  main(void) {    int  a[5] = {1, 2, 3, 4, 5}; int* ptr1 = (int*)(&a ...