qscoj 喵哈哈村的打印机游戏 区间dp
区间dp ,dp[l][r][d]代表从l到r的区间底色为d,具体看代码
第一次见到区间dp。。。两个小时对着敲了五遍终于自己敲懂了一遍ac
#include<bits/stdc++.h>
using namespace std;
int dp[][][];
string s;
int solve(int l,int r,int d)
{
if(l>r)return ;
if(l==r&&s[l]-'A'==d)return dp[l][r][d]=;
if(l==r)return dp[l][r][d]=;
if(dp[l][r][d]!=-)return dp[l][r][d];
dp[l][r][d]=1e8;
for(int i=;i<;i++)
dp[l][r][d]=min(dp[l][r][d],solve(l,r,i)+);
if(s[l]-'A'==d)dp[l][r][d]=min(dp[l][r][d],solve(l+,r,d));
if(s[r]-'A'==d)dp[l][r][d]=min(dp[l][r][d],solve(l,r-,d));
for(int i=l+;i<r;i++)
{
if(s[i]-'A'==d)
dp[l][r][d]=min(dp[l][r][d],solve(l,i-,d)+solve(i+,r,d));
}
return dp[l][r][d];
}
int main()
{
while(cin>>s)
{
memset(dp,-,sizeof(dp));
cout<<solve(,s.size()-,)<<endl;
}
return ;
}
qscoj 喵哈哈村的打印机游戏 区间dp的更多相关文章
- P1005 矩阵取数游戏[区间dp]
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的\(m*n\)的矩阵,矩阵中的每个元素\(a_{i,j}\)均为非负整数.游戏规则如下: 每次取数时须从每行各取走一个元素,共n个.经过m次后 ...
- 圆桌游戏(区间DP)
2.圆桌游戏 (game.cpp/c/pas) [问题描述] 有一种圆桌游戏是这样进行的:n个人围着圆桌坐成一圈,按顺时针顺序依次标号为1号至n号.对1<=i<=n的i来说,i号的左边是i ...
- BZOJ 2121: 字符串游戏 区间DP + 思维
Description BX正在进行一个字符串游戏,他手上有一个字符串L,以及其他一些字符串的集合S,然后他可以进行以下操作:对 于一个在集合S中的字符串p,如果p在L中出现,BX就可以选择是否将其删 ...
- 洛谷 P1043 数字游戏 区间DP
题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分 ...
- 多边形游戏——区间dp
题目描述 多边形(Polygon)游戏是单人玩的游戏,开始的时候给定一个由N个顶点构成的多边形(图1所示的例子中,N=4),每个顶点被赋予一个整数值,而每条边则被赋予一个符号:+(加法运算)或者*(乘 ...
- 【bzoj2121】字符串游戏 区间dp
题目描述 给你一个字符串L和一个字符串集合S,如果S的某个子串在S集合中,那么可以将其删去,剩余的部分拼到一起成为新的L串.问:最后剩下的串长度的最小值. 输入 输入的第一行包含一个字符串,表示L. ...
- Leetcode_877. 石子游戏(区间dp)
偶数堆石子,只能从首尾取,取多的赢. 每次操作会产生两个子状态,区间dp,记得先枚举长度. code class Solution { public: int dp[505][505]; bool s ...
- 1166 矩阵取数游戏[区间dp+高精度]
1166 矩阵取数游戏 2007年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description [ ...
- P1005 矩阵取数游戏 区间dp 高精度
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n \times mn×m的矩阵,矩阵中的每个元素a_{i,j}ai,j均为非负整数.游戏规则如下: 每次取数时须从每行各取走一个元素,共n ...
随机推荐
- docker for ubuntu 18 安装
官网地址: https://docs.docker.com/install/linux/docker-ce/ubuntu/ docker的作用:解决不同机器之间的环境差异问题,方便迁移. 0. 卸载旧 ...
- java中LIst转换成Json
List转换成json串 public String getNameListByID(Long Id) { List<Name> nameLists= nameService.select ...
- 【Spring源码解析】—— 结合SpringMVC过程理解IOC容器初始化
关于IOC容器的初始化,结合之前SpringMVC的demo,对其过程进行一个相对详细的梳理,主要分为几个部分: 一.IOC的初始化过程,结合代码和debug过程重点说明 1. 为什么要debug? ...
- centos 7.4安装python3.7.4
转自https://www.cnblogs.com/zhanglong8681/p/8421512.html 1.下载安装包 Linux下默认系统自带python2.7的版本,这个版本被系统很多程序所 ...
- 把Excel作为数据库,读到DataTable中,Excel科学计数法数字转字符串
需要引用:using System.Data.OleDb; /// <summary> /// 获取Excel数据,包含所有sheet /// </summary> /// & ...
- CSS3--2D&3D的使用
transform 过渡属性 向元素进行2D或3D转换 transform-origin:该元素基于某个点来旋转 transform-style: preserve-3d 规定嵌套元素如何在3D空间 ...
- Python中__init__和self的意义和作用
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去.以学生类为例,通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑 ...
- 《C++实践之路.pdf》源码
> 源码下载方法 < >> 打开微信 >> 扫描下方二维码 >> 关注林哥私房菜 >> 输入对应编号获取百度网盘提取密码 全书源码[已更新完 ...
- JS生成URL二维码
需求:项目中需要在UI界面有一个二维码,扫码后可以跳转到二维码包含的URL. 解决方案:在前端用js生成一个包含URL等信息的二维码. 实现: 方案一. <!DOCTYPE HTML PUBLI ...
- C++重载Level蓝图
一.从ALevelScriptActor派生自己的类,添加功能并编译. 二.在编辑器中打开level blueprint,然后class default选项卡中,在细节面板中Parent class选 ...