2019ccpc秦皇岛/Gym102361 I - Invoker dp
时间:2019-10-09
本文章向大家介绍2019ccpc秦皇岛/Gym102361 I - Invoker dp,主要包括2019ccpc秦皇岛/Gym102361 I - Invoker dp使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题意:
连续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[15][6]={ {"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[500]; int dp[MAXN][6]; int get_dif(int id1,int id2,int pos1,int pos2) { if(jineng[id1][pos1][0]==jineng[id2][pos2][0]&&jineng[id1][pos1][1]==jineng[id2][pos2][1] &&jineng[id1][pos1][2]==jineng[id2][pos2][2]) return 0; if(jineng[id1][pos1][1]==jineng[id2][pos2][0]&&jineng[id1][pos1][2]==jineng[id2][pos2][1]) return 1; if(jineng[id1][pos1][2]==jineng[id2][pos2][0]) return 2; return 3; } int main() { int ans; scanf("%s",s); int len=strlen(s); ans=len*3; memset(num,0,sizeof(num)); num['Y']=0,num['V']=1,num['G']=2,num['C']=3, num['X']=4,num['Z']=5,num['T']=6,num['F']=7, num['D']=8,num['B']=9; for(int i=0;i<len;++i) for(int j=0;j<6;++j) dp[i][j]=len*3; for(int i=0;i<6;++i) dp[0][i]=3; for(int i=1;i<len;++i) for(int j=0;j<6;++j) for(int k=0;k<6;++k) { dp[i][j]=min(dp[i][j],dp[i-1][k]+get_dif(num[s[i-1]],num[s[i]],k,j)); } for(int i=0;i<6;++i) ans=min(ans,dp[len-1][i]); cout<<ans+len<<endl; }
原文地址:https://www.cnblogs.com/isakovsky/p/11640064.html
- 详述 IntelliJ IDEA 的使用界面
- WCF系列教程之消息交换模式之请求与答复模式(Request/Reply)
- Koa-router源码解读
- WCF系列教程之初识WCF
- IntelliJ IDEA 缓存和索引的介绍及清理方法
- Node.js原理
- WCF系列教程之WCF消息交换模式之单项模式
- React Native调用Android相机图库
- IntelliJ IDEA 之 HelloWorld 项目创建及相关配置文件介绍
- 设置 IntelliJ IDEA 主题和字体的方法
- 修改 IntelliJ IDEA 模板注释中的 user 内容
- Android仿京东、天猫商品详情页
- C# checked和unchecked运算符
- 迭代子模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java自动化测试(登陆接口测试 14)
- poiAndEasyExcel学习(一)
- IP地址与子网划分
- HDFS异构存储简介
- Milvus 实战 | 基于 Kubernetes 的分布式集群部署方案
- Linux Bash基础(二)
- poiAndEasyExcel学习(二)
- poiAndEasyExcel学习(三)
- poiAndEasyExcel学习(四)
- 使用OpenCV为视频中美女加上眼线
- 论文精读|5th|YOLO v3的新特性|目标检测|附下载
- 算法集锦(9)|自动驾驶|道路图像增强算法
- 基于OpenCV实现海岸线变化检测
- 爬取bilibili再也不用头疼了,bilibili-api一步到位!
- 「React」很多人在滥用 state