题目链接

每个技能有6中组合,上一个技能也有6种组合,所以从该状态6种分别从上种的6种转移过来取最小值即可。

不读题的话可能就看成两种状态了(hh

ss表示当前状态,s[k]表示上个状态,check函数表示状态转移所需

dp[i][j]=min(dp[i-1][k]+check(s[k],ss),dp[i][j])

代码:

//#pragma comment (linker, "/STACK:102400000,102400000")
//#include<bits/stdc++.h>
#include<stdio.h>
#include<string.h>
#include<string>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<set>
#include<stack>
#include<vector>
#include<map>
#include<queue>
#include<list>
#include<time.h>
#define myself i,l,r
#define lson i<<1
#define rson i<<1|1
#define Lson i<<1,l,mid
#define Rson i<<1|1,mid+1,r
#define half (l+r)/2
#define lowbit(x) x&(-x)
#define min4(a, b, c, d) min(min(a,b),min(c,d))
#define min3(x, y, z) min(min(x,y),z)
#define max3(x, y, z) max(max(x,y),z)
#define max4(a, b, c, d) max(max(a,b),max(c,d))
typedef unsigned long long ull;
typedef long long ll;
#define pii make_pair
#define pr pair<int,int>
const int inff = 0x3f3f3f3f;
const long long inFF = 9223372036854775807;
const int dir[4][2] = {0, 1, 0, -1, 1, 0, -1, 0};
const int mdir[8][2] = {0, 1, 0, -1, 1, 0, -1, 0, 1, 1, -1, 1, 1, -1, -1, -1};
const double eps = 1e-10;
const double PI = acos(-1.0);
const double E = 2.718281828459;
using namespace std;
const int mod=998244353;
const int maxn=3e5+5;
const int maxm=1e6+5;
map<char,int> m;
char str[maxn];
ll dp[maxn][6];
int check(string s,string s1)
{if(s==s1) return 1;else if(s[1]==s1[0]&&s[2]==s1[1]) return 2;else if(s[2]==s1[0]) return 3;return 4;
}
int main()
{string sc[10][6]={{"QQQ","QQQ","QQQ","QQQ","QQQ","QQQ"},{"QQW","QWQ","WQQ","WQQ","WQQ","WQQ"},{"QQE","QEQ","EQQ","EQQ","EQQ","EQQ"},{"WWW","WWW","WWW","WWW","WWW","WWW"},{"QWW","WQW","WWQ","WWQ","WWQ","WWQ"},{"WWE","WEW","EWW","EWW","EWW","EWW"},{"EEE","EEE","EEE","EEE","EEE","EEE"},{"QEE","EQE","EEQ","EEQ","EEQ","EEQ"},{"WEE","EWE","EEW","EEW","EEW","EEW"},{"QWE","QEW","EQW","EWQ","WEQ","WQE"},};m['Y']=0; m['V']=1; m['G']=2; m['C']=3; m['X']=4;m['Z']=5; m['T']=6; m['F']=7; m['D']=8; m['B']=9;while(scanf("%s",str+1)!=EOF){int len=strlen(str+1);string s[6];s[0]="   ",s[1]="   ",s[2]="   ",s[3]="   ",s[4]="   ",s[5]="   ";for(int i=1;i<=len;i++){int x=m[str[i]];for(int j=0;j<6;j++){string ss=sc[x][j];dp[i][j]=inff;for(int k=0;k<6;k++)dp[i][j]=min(dp[i-1][k]+check(s[k],ss),dp[i][j]);}for(int j=0;j<6;j++) s[j]=sc[x][j];}ll ans=inff;for(int i=0;i<6;i++) ans=min(dp[len][i],ans);printf("%lld\n",ans);}
}

Invoker 2019CCPC秦皇岛站I题 简单DP相关推荐

  1. MUV LUV EXTRA 2019CCPC秦皇岛站J题 KMP

    题目链接 题意:意思给你俩数一个字符串,然后让你对字符串小数点后边的字符串进行处理,找个一个循环节以及对应出现的长度, 然后用a*p-b*l算得到一个最大值 那肯定循环节就想到了KMP了,然后循环长度 ...

  2. MUV LUV EXTRA 2019CCPC秦皇岛站J

    MUV LUV EXTRA 2019CCPC秦皇岛站J (hdu重现赛) 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6740 思路 kmp求循环节 ...

  3. Riddle(2018 CCPC (秦皇岛站) I 题)

    Problem Description Input Output Sample Input 3 3 1 1 1 5 1 1 2 2 3 10 1 2 3 4 5 6 7 8 9 10 Sample O ...

  4. ZOJ 3987 Numbers 2017CCPC秦皇岛站G题 大整数 二进制 贪心

    题目:https://cn.vjudge.net/problem/ZOJ-3987 题意:给出一个数n(不超过4000个十进制数字),将其分成m(不超过10的100次方)个数,要求这m个数的和等于n. ...

  5. 2019ccpc哈尔滨站K题(数学期望) Gym - 102394K Keeping Rabbits

    题目大意: 现在有nnn个兔子抢胡萝卜,nnn个兔子初始质量分别为wiw_iwi​,每次会有一个兔子胜出,然后它只一个萝卜质量w+1w+1w+1,每回合第 iii 个兔子生出的概率为:wi∑j=1nw ...

  6. 2019CCPC秦皇岛 K MUV LUV UNLIMITED(思维博弈)

    2019CCPC秦皇岛K 这个题感觉就是头脑风暴吧,关键在于抓住正确的方向想下去,我中间也跑偏了几次... 定义一个分支为从叶子往根的方向,不存在包含多个子节点的节点序列,即从叶子到包含多个子节点的节 ...

  7. 2019CCPC秦皇岛记

    秦皇岛打铁回来一周了. 大概就像流水账 打ACM两年了,各种大大小小比赛也去了5,6个.其中不乏很多打铁的经历.最近两天训练不在状态,就想总结一下CCPC秦皇岛站吧,给之后提个醒. 秦皇岛站算今年整个 ...

  8. 4.15 每周作业 —— 简单DP

    免费馅饼 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissi ...

  9. 2017CCPC秦皇岛站总结

    2017CCPC秦皇岛站总结 模拟赛出现很多问题,一开始我敲了一道水题,把字母写错了,WA,后来B,C题思路不对,仔细分析一下,大概在最后半个小时过了C,B题高精度,虽然最后几分钟想到了,但没时间写了 ...

最新文章

  1. jni和java之间字符串的转换
  2. 计算机中什么是适配器及作用,适配器是什么?适配器的作用主要有哪些
  3. CSS选择器、盒子模型及布局
  4. 《信息学奥赛一本通》高精除以高精,求它们的商和余数。
  5. C-Lodop回调函数的触发
  6. 深入理解JAVA虚拟机学习笔记(一)JVM内存模型
  7. tab栏圆点按钮_uniapp tabbar上的小圆点
  8. 线性回归实现——梯度下降
  9. android 重新设置lcd分辨率,wm命令使用方法(修改android 分辨率)修改
  10. Java如何实现原子操作
  11. python导入mysql慢_如何更高、更快、更强地用python向mysql导入数据
  12. 解决FireFox(火狐浏览器)占用资…
  13. 中国 vs 卡塔尔 一场幸运的比赛
  14. 冰桶算法,优质资源稳守宝座
  15. 一些网络广告定价模式的含义
  16. android 底层键值映射,如何在使用android-ETE时进行键值映射.doc
  17. python 爬取视频真实地址_python 爬取视频
  18. 华为策略路由加等价路由_华为策略路由配置实例
  19. 免费模式破冰PC业瓶颈
  20. 谣言检测相关论文阅读笔记:PAKDD2020-SAFE: Similarity-Aware Multi-Modal Fake News Detection

热门文章

  1. centeos7安装mariadb
  2. 计算机网络实验报告建立校园网,计算机网络实验报告
  3. 机器学习入门(05)— 使用 NumPy 实现 3 层简单神经网络
  4. hdu 6205 card card card 尺取+超神读入挂
  5. HDU 4135 Co-prime(容斥原理)
  6. VS2010 编译 QT4.8.7 x64
  7. java中名词概念的理解
  8. php explore im,浏栏器器-explore.class.php_php
  9. php限制字符输入,.NET_asp.net(c#)限制用户输入规定的字符和数字的代码,一下是这个代码: 只允许 用 - phpStudy...
  10. python二叉树遍历算法_分享python实现的二叉树定义与遍历