【bzoj5147】casino 区间dp
题目描述
输入
输出
样例输入
6
a 1
b 4
d 2
x 3
f 1
e 3
fxeeabadd
2
aba
ed
样例输出
16
题解
区间dp
同 bzoj2121 ,只不过给出的是字符串总长限制,因此设状态时需要将所有串压成一个串,中间用空字符隔开。转移时直接dp新串的位置。
权值只需要在统计答案时加上。
具体见代码吧。
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 155
using namespace std;
int a[26] , ans[N] , pos[N];
char str[N] , w[N] , tmp[3];
bool f[N][N] , g[N][N][N << 1];
int main()
{
int t , n , m , x , len , l , r , i , j , sum = 0;
scanf("%d" , &t);
while(t -- ) scanf("%s%d" , tmp , &x) , a[tmp[0] - 'a'] = x;
scanf("%s%d" , str + 1 , &m) , n = strlen(str + 1);
for(i = 1 ; i <= n ; i ++ ) sum += a[str[i] - 'a'];
pos[0] = -1;
for(i = 1 ; i <= m ; i ++ )
scanf("%s" , w + pos[i - 1] + 2) , pos[i] = strlen(w + pos[i - 1] + 2) + pos[i - 1] + 1;
for(i = 1 ; i <= n ; i ++ )
{
f[i][i - 1] = 1;
for(j = 0 ; j < m ; j ++ ) g[i][i - 1][pos[j] + 1] = 1;
}
for(len = 1 ; len <= n ; len ++ )
{
for(l = 1 ; l <= n - len + 1 ; l ++ )
{
r = l + len - 1;
for(i = 0 ; i <= pos[m] ; i ++ )
{
if(str[r] == w[i]) g[l][r][i] |= g[l][r - 1][i - 1];
for(j = l ; j <= r ; j ++ ) g[l][r][i] |= g[l][j - 1][i] & f[j][r];
}
for(i = 1 ; i <= m ; i ++ ) f[l][r] |= g[l][r][pos[i]];
}
}
for(i = 1 ; i <= n ; i ++ )
{
ans[i] = ans[i - 1] + a[str[i] - 'a'];
for(j = 1 ; j <= i ; j ++ )
if(f[j][i])
ans[i] = min(ans[i] , ans[j - 1]);
}
printf("%d\n" , sum - ans[n]);
return 0;
}
【bzoj5147】casino 区间dp的更多相关文章
- 【BZOJ-4380】Myjnie 区间DP
4380: [POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 162 Solved: ...
- 【POJ-1390】Blocks 区间DP
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5252 Accepted: 2165 Descriptio ...
- 区间DP LightOJ 1422 Halloween Costumes
http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
- poj2955 Brackets (区间dp)
题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...
- HDU5900 QSC and Master(区间DP + 最小费用最大流)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...
- BZOJ 1260&UVa 4394 区间DP
题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...
- 区间dp总结篇
前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...
- Uva 10891 经典博弈区间DP
经典博弈区间DP 题目链接:https://uva.onlinejudge.org/external/108/p10891.pdf 题意: 给定n个数字,A和B可以从这串数字的两端任意选数字,一次只能 ...
随机推荐
- 课上实践练习——MySort
模拟实现Linux下Sort -t : -k 2的功能.参考 Sort的实现.提交码云链接和代码运行截图. Linux下Sort -t : -k 2的功能 sort的工作原理: sort将文件的每一行 ...
- POJ1035_Spell checker_KEY
题目传送门 一道暴力可以过的水题.(直接暴力模拟的那种) 但是我打Trie练练模板,但是TMD因为数组开太小卡了好久. code: #include <cstdio> #include & ...
- 搜索引擎ElasticSearch系列(三): ElasticSearch2.4.4 bigdesk插件安装
一:ElasticSearch bigdesk插件简介 bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu.内存使用情况,索引数据.搜索情况, ...
- Maven学习(十四)-----Maven 构建配置文件
Maven 构建配置文件 什么是构建配置文件? 生成配置文件是一组可以用来设置或覆盖 Maven 构建配置值的默认值.使用生成配置文件,你可以针对不同的环境,如:生产V/S开发环境自定义构建. 配置文 ...
- 第一篇:一天学会MongoDB数据库之Python操作
本文仅仅学习使用,转自:https://www.cnblogs.com/suoning/p/6759367.html#3682005 里面新增了如果用用Python代码进行增删改查 什么是MongoD ...
- PHPCMS如何让手机站点取消浏览大图直接加载原图
一.然后找到phpcms\modules\wap\functions\global.func.php 文件,找到相关代码,如下图: return '<img src="'.thumb( ...
- HWI的安装
一.安装的过程 hwi的安装过程: 1.解压src源码包:tar -zvxf apache-hive-1.2.2-src.tar.gz 2.进到HWI目录下:cd /home/bigdata/apac ...
- spring JDBC 事务管理
spring JDBC 事务管理 一.Spring 中的JDBC Spring中封装了JDBC的ORM框架,可以用它来操作数据,不需要再使用外部的OEM框架(MyBatis),一些小的项目用它. 步骤 ...
- 在intelij IDEA中添加对jetBrick文件的识别
在intelij IDEA中添加对jetBrick文件的识别 打开setting, 搜索File Types, 在Recognized File Types窗口找到Java Server Page或者 ...
- Python学习之web框架 Flask
一.通过PIP 安装Flask 1.1 Windows环境安装pip A.首先PIP进入官网(https://pypi.python.org/pypi/pip)下载gz包 B.对gz压缩包进行解压,解 ...