传送门

文章目录

  • 题意:
  • 思路:

题意:

累了,略。

思路:

将这101010个串打乱顺序,每个串最多有666种情况,全部写出来,让后连边。最后直接在转移的时候分别从上一个字符的666个状态转移就好啦。
注意连边的时候EEQEEQEEQ和EQQEQQEQQ重叠部分是222,也就是花费是111。因为这个wa了一天。

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=100010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n;
char ss[N];
int id[1000],now[1000];
int g[100][100];
string s[100],a[100];
int dp[N][50];int get(string a,string b)
{for(int i=0;i<3;i++) if(a.substr(i)==b.substr(0,3-i)) return i;return 3;
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);id['Y']=1; id['V']=7; id['G']=13; id['C']=19;id['X']=25; id['Z']=31; id['T']=37; id['F']=43;id['D']=49; id['B']=55;a[1]="QQQ"; a[2]="QQQ"; a[3]="QQQ"; a[4]="QQQ"; a[5]="QQQ"; a[6]="QQQ";       //Ya[7]="QQW"; a[8]="QWQ"; a[9]="WQQ"; a[10]="WQQ"; a[11]="WQQ"; a[12]="WQQ";    //Va[13]="EQQ"; a[14]="QEQ"; a[15]="QQE"; a[16]="QQE"; a[17]="QQE"; a[18]="QQE"; //Ga[19]="WWW"; a[20]="WWW"; a[21]="WWW"; a[22]="WWW"; a[23]="WWW"; a[24]="WWW"; //Ca[25]="QWW"; a[26]="WQW"; a[27]="WWQ"; a[28]="WWQ"; a[29]="WWQ"; a[30]="WWQ"; //Xa[31]="EWW"; a[32]="WEW"; a[33]="WWE"; a[34]="WWE"; a[35]="WWE"; a[36]="WWE"; //Za[37]="EEE"; a[38]="EEE"; a[39]="EEE"; a[40]="EEE"; a[41]="EEE"; a[42]="EEE"; //Ta[43]="EEQ"; a[44]="EQE"; a[45]="QEE"; a[46]="QEE"; a[47]="QEE"; a[48]="QEE"; //Fa[49]="EEW"; a[50]="EWE"; a[51]="WEE"; a[52]="WEE"; a[53]="WEE"; a[54]="WEE"; //Da[55]="EQW"; a[56]="EWQ"; a[57]="QEW"; a[58]="QWE"; a[59]="WEQ"; a[60]="WQE"; //Bfor(int i=1;i<=60;i++) for(int j=1;j<=60;j++) if(i!=j) g[i][j]=get(a[i],a[j]);//rd_wa();//GFGVwhile(scanf("%s",ss+1)!=EOF){n=strlen(ss+1); int ans=INF;ans=n*3; for(int i=1;i<=n;i++) for(int j=0;j<6;j++) dp[i][j]=i*3;for(int i=1;i<=60;i++) g[i][i]=0;for(int aa=0;aa<6;aa++) dp[1][aa]=3;for(int i=2;i<=n;i++){for(int aa=0;aa<6;aa++)for(int b=0;b<6;b++){dp[i][aa]=min(dp[i][aa],dp[i-1][b]+g[id[ss[i-1]]+b][id[ss[i]]+aa]);//if(i==2&&aa==0) printf("%d %d %d %d %d \n",id[ss[i-1]]+b,id[ss[i]]+aa,get(a[id[ss[i-1]]+b],a[id[ss[i]]+aa]),g[id[ss[i-1]]+b][id[ss[i]]+aa],dp[i][aa]);}//for(int j=0;j<6;j++) printf("%d %d\n",i,dp[i][j]);}for(int aa=0;aa<6;aa++) ans=min(ans,dp[n][aa]);cout<<(ans+n)<<endl;}return 0;
}
/**/

2019 秦皇岛 I - Invoker Gym - 102361I dp相关推荐

  1. Invoker 2019CCPC秦皇岛站I题 简单DP

    题目链接 每个技能有6中组合,上一个技能也有6种组合,所以从该状态6种分别从上种的6种转移过来取最小值即可. 不读题的话可能就看成两种状态了(hh ss表示当前状态,s[k]表示上个状态,check函 ...

  2. 2019ICPC秦皇岛I Invoker

    Problem Description 在 dota2 中有一个叫做祈求者(Invoker)的英雄,在游戏中他有三个基础技能:冰(Quas),雷(Wex),火(Exort),每施展一个技能就可以获得相 ...

  3. [JZOJ6075]【GDOI2019模拟2019.3.20】桥【DP】【线段树】

    Description N,M<=100000,S,T<=1e9 Solution 首先可以感受一下,我们把街道看成一行,那么只有给出的2n个点的纵坐标是有用的,于是我们可以将坐标离散化至 ...

  4. Codeforces Hello 2019 D. Makoto and a Blackboard[DP+数论+概率期望]

    题意:给出n和k,n每次会等概率的变成n的一个因子,问这样k次以后的期望大小 每个质因子贡献独立,变成一个因子就相当于变了质因子的次数 所以分解质因数以后对每个质因子做dp #include < ...

  5. 2020CCPC(秦皇岛) - Kingdom‘s Power(树形dp+贪心)

    题目大意:给出一棵 n 个节点的有根树,点 1 为根节点,现在在根节点有无穷多个士兵,每一秒可以控制任意一个士兵向任意一个单位移动一步,士兵移动到的点会被永久占领,现在问最少需要经过多少秒,才能将所有 ...

  6. 【十二省联考2019】皮配【分部dp】

    题意:有 nnn 个学校隶属于 ccc 个城市,每个学校有 sis_isi​ 个人.把它们放入一个 2×22\times 22×2 的格子中,要求同一学校的必须放在同一个格子,同一城市的必须放在同一行 ...

  7. 2019 秦皇岛CCPC赛后总结

    以前一直想参加ICPC或CCPC的,所以即使得知比赛会打星号,我还是想去. 感觉自己对什么都没有兴趣了,比较渴望找点快乐.. 这场比赛非常强,吉老师和杜老师都来啦,还有岛娘! 有幸要到了签名 滚榜的时 ...

  8. 【LOJ #6617】「THUPC 2019」摆家具 / furniture(DP / BSGS / 矩阵快速幂)

    传送门 首先显然k=lognk=lognk=logn 显然对于每个iii我们只用关注有多少位与询问的数字不同 考虑分成两个部分 先对每个数字iii求出与他有jjj位不同的数字价值之和 再求出ttt轮后 ...

  9. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)E.飞行棋(期望dp+矩阵快速幂)

    题目 飞行棋的规则如下: 1.每名玩家有一个棋子,每个回合可以掷一次骰子. 2.如果使用的骰子为 k面,则这 k面上的点数分别为 1,2,3,-,k,且掷得每种点数的概率均为​. 3.如果当前回合掷得 ...

最新文章

  1. MySQL使用INSERT插入多条记录
  2. Eigen入门之密集矩阵 10 - 矩阵的行优先及列优先存储
  3. @Builder(toBuilder=true) 链式初始化对象、修改对象
  4. Nat Mach Intell | 江瑞课题组提出首个针对单细胞染色质开放性数据的细胞类型辨识神经网络模型EpiAnno...
  5. STM32F103单片机modbus通信示例
  6. c#语言猜数字游戏,使用C#实现猜数字游戏
  7. MSU 出品的 H.264 编码器比较 (2011.5)(包含VP8以及XviD)
  8. ubuntu中查看IP地址命令
  9. windows10 将user用户名目录修改为英文
  10. 切换阿里巴巴开源镜像站镜像——Kali镜像
  11. Python ADF检验
  12. 自媒体免费编辑工具竞品分析 135编辑器乐观号媒号通三大功能优劣报告
  13. Python 编辑器哪个好用
  14. js修改伪元素的属性、styleSheets获取样式表,Failed to read the 'cssRules' property from 'CSSStyleSheet' Cannot acces
  15. [需求管理-2]:什么是需求以及需求的收集与识别
  16. 特别好用的git动图制作软件
  17. QQ邮箱设置企业邮箱别名邮箱
  18. 什么击计算机窗口可以打开资源管理器,在win7中双击打开计算机和右击打开资源管理器有什么区别...
  19. 数说 | 中国世界500强数量首超美国,但别高兴得太早
  20. 游戏运营数据解析-MAU DAU DAU/MAU

热门文章

  1. 用3年时间破解学界200多年难题,年仅21岁的天才竟因谈了一场恋爱挂掉了.........
  2. 被学校辞退、拒绝FB后:语音识别大牛Povey确认兼职北京初创公司,称主业还选中国...
  3. 每日一笑 | 谷歌能严谨到什么地步?
  4. 工程师和科学家有什么区别
  5. 为什么程序员发现不了自己的BUG?
  6. 初级Java开发工程师!绝密文档,面试手册全面突击!!!秋招已经到来
  7. java获取整点与凌晨的时间戳
  8. 后端接口重定向_接口自动化面试题,建议收藏!
  9. linux accept过程,Linux协议栈accept和syn队列问题
  10. 在以下说法错误的是_外行人对翡翠有哪些错误认知?行家给你最精准的答案