传送门

每个字母只有两种选择,变成另一个或者不变。

所以f[i][j][k]表示前i个字母有j个j变成z,有k个z变成j

只需要比较j==k时的答案就行

#include <cstdio>
#include <cstring>
#define N 505
#define max(x, y) ((x) > (y) ? (x) : (y)) int n, m, ans;
char s[N];
int f[N][105][105]; int main()
{
int i, j, k;
scanf("%d %d", &n, &m);
scanf("%s", s + 1);
memset(f, -0x3f, sizeof(f));
f[0][0][0] = f[1][0][0] = 0;
s[1] == 'j' ? f[1][1][0] = 0 : f[1][0][1] = 0;
for(i = 2; i <= n; i++)
for(j = 0; j <= m; j++)
for(k = 0; k <= m; k++)
{
f[i][j][k] = f[i - 1][j][k];
if(s[i - 1] == 'j' && s[i] == 'z') f[i][j][k] = max(f[i][j][k], f[i - 2][j][k] + 1);
if(s[i - 1] == 'j' && s[i] == 'j' && j) f[i][j][k] = max(f[i][j][k], f[i - 2][j - 1][k] + 1);
if(s[i - 1] == 'z' && s[i] == 'z' && k) f[i][j][k] = max(f[i][j][k], f[i - 2][j][k - 1] + 1);
if(s[i - 1] == 'z' && s[i] == 'j' && j && k) f[i][j][k] = max(f[i][j][k], f[i - 2][j - 1][k - 1] + 1);
if(j == k) ans = max(ans, f[i][j][k]);
}
printf("%d\n", ans);
return 0;
}

  

[luoguP1136] 迎接仪式(DP)的更多相关文章

  1. 迎接仪式 dp

    题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出“欢迎欢迎欢迎欢迎……”的 ...

  2. luogu P1136 迎接仪式

    luogu P1136 迎接仪式 本题的难点是状态设计, n^2*m 的状态设计转移太过垄杂,emmmm反正我写不出来QAQ 参考了题解 /*相同字符不用调换,一个字符最多被调换一次否则会有等价多方案 ...

  3. 洛谷 P1136 迎接仪式 解题报告

    P1136 迎接仪式 题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出&q ...

  4. P1136 迎接仪式

    P1136 迎接仪式 $O(n^{2}k)$:$f[i][k]$表示到第$i$个字符为止,交换$k$次,得到的最多子串数 那么枚举位置$j$,状态可以从$f[j][k-1]+1$转移过来 $O(nk^ ...

  5. 【noip模拟题】迎接仪式(dp+特殊的技巧)

    好神的一题... 这是一道DP题,本题的难点在于状态的确定,由于调整是任意的,很难划分状态,我们略微修改一下调整的形式:把一次’j’和’z’交换看做两次变换:’j’->’z’;’z’->’ ...

  6. P1136 迎接仪式 (动态规划)

    题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出“欢迎欢迎欢迎欢迎……”的 ...

  7. 洛谷P1136 迎接仪式

    题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出“欢迎欢迎欢迎欢迎……”的 ...

  8. 洛谷P1136 迎接仪式 动态规划

    显然,这是一道动归题. 我们发现,每次交换时只可能交换不同的字母(交换同类字母显然是没有意义的).那么每次交换等同于将 111 个 "j""j""j& ...

  9. 【u122】迎接仪式

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路 ...

随机推荐

  1. java实现九九乘法表

    public class Demo { public static void main(String[] args) { for (int i = 1; i < 10; i++) {      ...

  2. sdut1650I-Keyboard(dp)

    链接 题目大意就相当于 跟你一串字符串 让你截成k段 使总体的值最小 想法是递归的 递归太慢 可以转换为递推的 这样就有可以推出状态方程 dp[i][j] = max(dp[i][j],dp[i-1] ...

  3. 树莓派 VNC 远程桌面 同一个桌面

    如何在ssh登录的情况下配置好vino 1.传输文件 2.ssh sudo dpkg -i ~/swap/deb/tight* sudo cp ~/swap/vino.desktop /etc/xdg ...

  4. spring 整合struts

    1.例子:未被spring整合 struts.xml 的配置文件 <constant name="struts.enable.DynamicMethodInvocation" ...

  5. iOS Programming View and View Hierarchy 视图和视图等级

    iOS Programming  View and View Hierarchy 视图和视图等级 1.1(1)File → New → Project.. From the iOS section, ...

  6. JAVA 学习笔记 - 反射机制

    1.   JAVA反射机制的概念 2. 怎样实例化一个 Class对象 Class.forName(包名.类名); 对象.getClass(); 类.class; ================== ...

  7. win7电脑桌面壁纸曝光过高影响图标怎么办?亲测实用解决方法

    现在用win7系统的人应该还是挺多的吧,虽然说windows家族已经升级到现在的win11了,相信大多数人家用的电脑系统还是win7吧,今天要讲的是一个壁纸曝光度过高的解决办法,虽然还不清楚为什么,但 ...

  8. SolidWorks的文件类型

    零件模板 *.prtdot装配体模板 *.asmdot工程图模板 *.drwdot颜色文件 *.sldclr曲线文件 *.sldcrv复制设定向导文件 *.sldreg零件文件:prt sldprtF ...

  9. Java基础(十一)--Serializable和Externalizable接口实现序列化

    序列化在日常开发中经常用到,特别是涉及到网络传输的时候,例如调用第三方接口,通过一个约定好的实体进行传输,这时你必须实现序列 化,这些都是大家都了解的内容,所以文章也会讲一下序列化的高级内容. 序列化 ...

  10. C# html table转excel

    1. protected void ebtDC_Click(object sender, EventArgs e) { string elxStr = "<table><t ...