http://codeforces.com/gym/101397

B

dp[i][j][k]: i为前一个行动的状态,0-switch、1-type,j为当前状态layout的编号,k 是已键入的字符数量。

遍历k,对每个k遍历j: 1..n

dp[0][j % n + 1][k] = min(dp[0][j % n + 1][k], min(dp[0][j][k] + b, dp[1][j][k] + a))

↑ 执行两次,第二遍处理是为了保证n->1之后正确

dp[1][j][k + 1] = min(dp[0][j][k], dp[1][j][k]) + c

最后答案取min(dp[1][1..n][len])

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn = 2005;
char str[maxn];
bool mark[maxn][26];
int n, a, b, c, len;
ll dp[2][maxn][maxn];
const ll INF = 0x3f3f3f3f3f3f3f3f;
int main() {
memset(dp, 0x3f, sizeof dp);
scanf("%d%d%d%d", &n, &a, &b, &c);
for (int j = 1; j <= n; j++) {
char s[maxn];
scanf("%s", s);
int lens = strlen(s);
for (int k = 0; k < lens; k++) {
mark[j][s[k] - 'a'] = true;
}
}
scanf("%s", str);
len = strlen(str);
dp[1][1][0] = 0;
for (int k = 0; k <= len; k++) {
for (int j = 1; j <= n; j++) {
dp[0][j % n + 1][k] = min(dp[0][j % n + 1][k], min(dp[0][j][k] + b, dp[1][j][k] + a));
}
for (int j = 1; j <= n; j++) {
dp[0][j % n + 1][k] = min(dp[0][j % n + 1][k], min(dp[0][j][k] + b, dp[1][j][k] + a));
}
for (int j = 1; j <= n; j++) {
if (mark[j][str[k] - 'a']) {
dp[1][j][k + 1] = min(dp[1][j][k], dp[0][j][k]) + c;
}
}
}
ll ans = dp[1][1][len];
for (int j = 2; j <= n; j++) {
ans = min(ans, dp[1][j][len]);
}
printf("%I64d\n", ans == INF ? -1 : ans);
}

【dp】New Keyboard的更多相关文章

  1. Kattis - honey【DP】

    Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...

  2. HDOJ 1423 Greatest Common Increasing Subsequence 【DP】【最长公共上升子序列】

    HDOJ 1423 Greatest Common Increasing Subsequence [DP][最长公共上升子序列] Time Limit: 2000/1000 MS (Java/Othe ...

  3. HDOJ 1501 Zipper 【DP】【DFS+剪枝】

    HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

  4. HDOJ 1257 最少拦截系统 【DP】

    HDOJ 1257 最少拦截系统 [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...

  5. HDOJ 1159 Common Subsequence【DP】

    HDOJ 1159 Common Subsequence[DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...

  6. HDOJ_1087_Super Jumping! Jumping! Jumping! 【DP】

    HDOJ_1087_Super Jumping! Jumping! Jumping! [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...

  7. POJ_2533 Longest Ordered Subsequence【DP】【最长上升子序列】

    POJ_2533 Longest Ordered Subsequence[DP][最长递增子序列] Longest Ordered Subsequence Time Limit: 2000MS Mem ...

  8. HackerRank - common-child【DP】

    HackerRank - common-child[DP] 题意 给出两串长度相等的字符串,找出他们的最长公共子序列e 思路 字符串版的LCS AC代码 #include <iostream&g ...

  9. LeetCode:零钱兑换【322】【DP】

    LeetCode:零钱兑换[322][DP] 题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成 ...

随机推荐

  1. 升级Xcode10报错问题修复

    Xcode10 问题1 报文件重复 File--> Workspace Settings --> Build System 修改为Legacy Build System (默认是New B ...

  2. 移动端H5页面解决软件键盘把页面顶起

    在input失去焦点的时候加上强制页面归位 window.scroll(0,0); 上代码 <input data-component="SearchInput" type= ...

  3. thinkphp+redis实现秒杀,缓存等功能

    秒杀是商城常见功能  php+redis是最常见的秒杀功能 1,安装redis,根据自己的php版本安装对应的redis扩展 首先查看phpinfo();php环境信息 2,下载redis https ...

  4. 大数据调错系列之hadoop在开发工具控制台上打印不出日志的解决方法

    (1)在windows环境上配置HADOOP_HOME环境变量 (2)在eclipse上运行程序 (3)注意:如果eclipse打印不出日志,在控制台上只显示 1.log4j:WARN No appe ...

  5. 编写Makefile规则

    一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 ...

  6. Navicat 报错1251连接不成功Mysql

    使用Navicat 连接数据库时候出现1251错误,解决方法. 1.首先打开mysql.exe,然后输入密码(mysql.exe可以在安装的位置搜索一下) 2.输入ALTER USER 'root'@ ...

  7. android studio 调试技巧(简直太好用)

    android studio 调试技巧(简直太好用) 说到android studio的调试,很多人可能会说,这有什么可讲的不就是一个断点调试么,刚开始我也是这么认为的,直到我了解之后,才发现,调试原 ...

  8. nw

    https://github.com/nwjs/nw.js/wiki/List-of-apps-and-companies-using-nw.js

  9. 转:c# Linq 的分页[转]

    转:http://www.cnblogs.com/leleroyn/archive/2008/05/14/1196811.html 很多学习Linq的朋友肯定有自己所不同的方法,考虑这个问题我所想到的 ...

  10. 20155235 《Java程序设计》 实验二 实验三 敏捷开发与XP实践

    20155235 <Java程序设计> 实验二 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验内容 没有Linux基础的同学建议先学习<Linux基础入 ...