qscoj 喵哈哈村的打印机游戏 区间dp

点这里去看题

区间dp ,dp[l][r][d]代表从l到r的区间底色为d,具体看代码

第一次见到区间dp。。。两个小时对着敲了五遍终于自己敲懂了一遍ac

#include<bits/stdc++.h>
using namespace std;
int dp[55][55][55];
string s;
int solve(int l,int r,int d)
{
    if(l>r)return 0;
    if(l==r&&s[l]-‘A‘==d)return dp[l][r][d]=0;
    if(l==r)return dp[l][r][d]=1;
    if(dp[l][r][d]!=-1)return dp[l][r][d];
    dp[l][r][d]=1e8;
    for(int i=0;i<26;i++)
        dp[l][r][d]=min(dp[l][r][d],solve(l,r,i)+1);
    if(s[l]-‘A‘==d)dp[l][r][d]=min(dp[l][r][d],solve(l+1,r,d));
    if(s[r]-‘A‘==d)dp[l][r][d]=min(dp[l][r][d],solve(l,r-1,d));
    for(int i=l+1;i<r;i++)
    {
        if(s[i]-‘A‘==d)
            dp[l][r][d]=min(dp[l][r][d],solve(l,i-1,d)+solve(i+1,r,d));
    }
    return dp[l][r][d];
}
int main()
{
    while(cin>>s)
    {
        memset(dp,-1,sizeof(dp));
        cout<<solve(0,s.size()-1,27)<<endl;
    }
    return 0;
}
时间: 2024-12-07 20:57:19

qscoj 喵哈哈村的打印机游戏 区间dp的相关文章

喵哈哈村的修路游戏

链接:http://qscoj.cn/problem/51/ 喵哈哈村的扔硬币游戏 发布时间: 2017年3月21日 20:00   最后更新: 2017年3月21日 20:01   时间限制: 1000ms   内存限制: 128M 描述 喵哈哈村的月亮同学很无聊,于是太阳同学给月亮同学出了个问题,来打发时间: 有一排硬币,一共N枚,初始时都是正面朝上.接下来会有很多次操作,每次会将其中一段连续的硬币翻一面.求最后硬币的结果. 输入 本题包含多组测试数据.第一行输入两个数字N,M分别表示硬币的

qscoj 喵哈哈村的魔法考试 Round #5 (Div.2) 题解(前1,2,3题)ps:前三题在本人水平可掌控范围之内

题目链接:http://qscoj.cn/problem/30/ 第一题 喵哈哈村的狼人杀大战(1) 时间限制: 1000ms   内存限制: 128M 描述 喵哈哈村最近热衷于玩一个叫做狼人杀的游戏! 张小田今天她抽到的是民的身份,按照她的一贯玩法,她不会考虑发言者的发言,她只考虑站队情况. 现在是警上竞选的投票环节,现在只剩下还能当警长的两个真假预言家. 张小田认为,如果在某一天,有连续坐在一起的k个人投票给同一个人的话,那么她就认为这一局可能比较危险. 投给第一个预言家的,就记为0,投给第

qscoj 喵哈哈村 40,41

链接:http://qscoj.cn/problem/41/ 喵哈哈村的七十六 发布时间: 2017年3月14日 20:02   最后更新: 2017年3月14日 20:03   时间限制: 1000ms   内存限制: 128M 描述 为了拯救喵哈哈村,这个世界必须要存在英雄. 一名英雄七十六站了出来! 但是七十六需要一把强大的武器,于是他走进了武器商店. 第$i$把武器需要$b[i]$元,能提供$c[i]$的武力值. 他现在有$a$元,他只能购买一把武器,请问他最多能够增加多少武力值呢? 如

【bzoj2121】字符串游戏 区间dp

题目描述 给你一个字符串L和一个字符串集合S,如果S的某个子串在S集合中,那么可以将其删去,剩余的部分拼到一起成为新的L串.问:最后剩下的串长度的最小值. 输入 输入的第一行包含一个字符串,表示L. 第二行包含一个数字n,表示集合S中元素个数. 以下n行,每行一个字符串,表示S中的一个元素. 输入字符串都只包含小写字母. 输出 输出一个整数,表示L的最短长度. 样例输入 aaabccd3acabcaaa 样例输出 2 题解 我们考虑:每次删除连续的一段,对应到原串上即:删除 $[l,r]$ 中所

1166 矩阵取数游戏[区间dp+高精度]

1166 矩阵取数游戏 2007年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description [问题描述]帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m 的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下:1. 每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素:2. 每次取走的各个元素只能是该元素所在行的行首或行尾:3. 每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分

多边形游戏 /// 区间DP oj1903

题目大意: ... Input 输入的第一行是单独一个整数n( 3 ≤ n ≤ 18 ),表示多边形的顶点数(同时也是边数). 接下来第n行,每行包含一个运算符("+"或"*")和一个整数V[i]( -10 < V[i] < 10 ),分别表示第i条边所对应的运算符和第i个顶点上的数值. Output 输出只有一个整数,表示最高得分W ( -231 < W < 231 ). Sample Input 3+ 2* 3+ 1 Sample Out

luogu P1005 矩阵取数游戏 区间DP

每一行是独立的,分开处理即可. dp[i][j]表示[i,j]这一段,取完的最大收益.转移很显然,dp[i][j] = max(dp[i + 1][j] + 2^(m - (j - l)) * mp[t][i],dp[i][j - 1] + 2^(m - (j - l)) * mp[t][j]) 不想写高精度,python水一发. 1 n,m = map(int,input().split()) 2 res = 0 3 mp = [[0 for i in range(0,80,1)] for i

【日常学习】【区间DP+高精】codevs1166 矩阵取数游戏题解

题目来自NOIP2007TG3 如果在考场上我现在已经歇菜了吧 今天一整天的时间全部投在这道题上,收获不小. 先上题目 题目描述 Description [问题描述] 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m 的矩阵,矩阵中的每个元素aij均 为非负整数.游戏规则如下: 1. 每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. 每次取走的各个元素只能是该元素所在行的行首或行尾: 3. 每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分= 被取走的元素

qscoj 128 喵哈哈村的魔法源泉(2)(模仿快速幂,好题)

喵哈哈村的魔法源泉(2) 发布时间: 2017年5月9日 20:59   最后更新: 2017年5月9日 21:00   时间限制: 1000ms   内存限制: 128M 描述 喵哈哈村有一个魔法源泉,里面有无穷无尽的力量. 但是前提是你能答出这样一个问题: 给你a,b,p,让你输出a*b%p的值. 输入 本题包含若干组测试数据.第一行三个整数a,b,p. 满足:0<=a,b,p<=1e18 输出 输出答案 样例输入1 复制 10 1 7 样例输出1 3题目链接:http://qscoj.c