首页 > 其他分享 >AT_abc325_g offence 题解

AT_abc325_g offence 题解

时间:2023-10-31 10:23:01浏览次数:37  
标签:字符 删除 题解 abc325 offence 转移

AT_abc325_g offence 题解

一道不难但是需要想一想的区间 DP。

有一个比较复杂的例子:ooofofxxx,简单的分析可知,一个 of 后面删除多少,与其前、后都有关,于是考虑区间 DP。

想到这里,其实问题已经解决一半了。

状态设计

设 \(f(l,r)\) 为闭区间 \([l,r]\) 经过操作之后的最小长度。

注意:我的状态设计与 官方题解 的区别在于,我设计的是闭区间,而官方题解是左闭右开。

考虑转移,我们分类讨论第一个字符是否删除。

删除

条件:

  • \(S_l=\texttt{o}\);
  • 找到一个 \((l,r]\) 内的 \(k\),满足 \(S_k=\texttt{f}\);
  • \((l,k)\) 内的所有字符能删除,即 \(f(l+1,k-1)=0\)。

转移:

  • 那么可以转移 \(f(l,r)=\max\{f(k+1,r)-K,0\}\);
  • 表示:先删除 \((l,k)\),然后删除 \(l\) 和 \(k\) 及后面的 \(K\) 的字符,但是不能删到负数。

不删除

条件:

  • 无,任何情况均可转移.

转移:

  • 因为第一个字符不删除,所以 \(l\) 和 \((l,r]\) 是独立的;
  • 所以有 \(f(l,r)=f(l+1,r)+1\);
  • 表示:\(l\) 后面的,最少可以剩下多少个字符,在加上 \(l\) 这个字符。

代码

于是,时间复杂度为 \(\mathcal{O}(n^3)\),可过。

代码见:https://atcoder.jp/contests/abc325/submissions/46904975

标签:字符,删除,题解,abc325,offence,转移
From: https://www.cnblogs.com/RainPPR/p/solution-at-abc325-g.html

相关文章

  • [CSP-S2020] 儒略日 题解
    [CSP-S2020]儒略日今儿终于做掉困扰多年的题目了,其实想好细节也不难。容易发现儒略历和格里高利历的润年判断方式不一样,并且中间有消失的十天,计算起来相当不方便。所以我们可以首先计算出\(-4713.1.1\)~\(1582.10.4\)会经过多少天,可以通过一天一天暴力跳的方法计算出需要\(......
  • P4309 [TJOI2013] 最长上升子序列题解
    P4309[TJOI2013]最长上升子序列题解正文单调队列?单调锤子队列!!本题的操作可以省略成:单点修改区间查询好极了,此时我们有两种选择:线段树和树状数组,(平衡树,真不会,下一位因为不需要其他操作,所以我们还是选择更小巧更可爱的树状数组吧。关于vectorvector的insert操作支......
  • 题解 ABC326G【Unlock Achievement】
    题解ABC326G【UnlockAchievement】problem有\(n\)项属性,第\(j\)个属性的等级\(l_j\)初始为\(1\),每提升一级花费\(c_j\)的钱。又有\(m\)项成就,第\(i\)项成就要求对于所有\(1\leqj\leqn\),都要\(l_j\geqL_{i,j}\),如果满足所有要求,获得\(a_i\)的钱。求你最多......
  • ADASTRNG - Ada and Substring 题解
    ADASTRNG-AdaandSubstring题解题目描述给定一个小写字符串。输出\(26\)个数,代表以\(\texttt{a}\sim\texttt{z}\)开头的本质不同的子串个数。题目分析高度数组模板题。可以想到将以每个字符开头的本质不同的子串数目转化为:以每个字符开头的所有字串数目减去以每......
  • Luogu P4168 [Violet] 蒲公英 题解
    题目链接[Violet]蒲公英分析可以先将\(a[i]\)离散化然后考虑分块对于询问\(x,y\),\(x\)属于\(p\),\(y\)属于\(q\)当\(q-p<=1\)时直接暴力枚举即可,时间复杂度为\(O(\sqrt{n})\)\(else\)如图中间为分好块的地方我们发现,\(ans\)只可能为中间的众数或两边的......
  • 2023年10月第四周题解------输入与输出
     问题A:ly喜欢玩石头 解题思路题目告诉我们(1<=a,b<=1e9),那么int类型就够了。因为这两个数相加最大为20亿定义两个变量a和b输入a和b的值打印a加b的值#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<time.h>intmain......
  • 题解:「NOIP2022 提高组」种花
    题解:「NOIP2022提高组」种花题目大意:给定一个\(n\timesm\)的01矩阵,0表示可以种花,1表示土坑(无法种花),现在要在图上种出一个C型或F型(C,F横着的两条线的长度都可以不同,但一定是面向右边的),现在问你种C和F分别有多少种方案(除了这个形状外不能在任何地方种花),多组数据,\(T\leq5\)。......
  • 【梦熊联盟】10月28日 NOIP十连测 第五场 题解
    目录T1男女排队简要题意:题解:T2树上最多不相交路径简要题意:题解:T3生日T4组队比赛简要题意:题解:T1男女排队简要题意:求长度为\(n\)的01序列不包含字串101或111的个数。\((n\leqslant10^{18})\)题解:一开始往容斥的思路去想,但是在推式子的时候发现其实很难容斥掉一个子串......
  • 常见问题解决 --- 安卓12关闭phantom processes killer杀后台功能
    1.adb连接成功后,执行adbdevices2.执行adbshell3.执行device_configset_sync_disabled_for_testspersistentdevice_configputactivity_managermax_phantom_processes2147483647settingsputglobalsettings_enable_monitor_phantom_procsfalse......
  • 常见问题解决 --- adb连接失败
    可能原因有,手机问题,电脑问题,线材问题。手机问题有:没有开启adb调试usb连接模式不是文件传输模式电脑问题有:adb驱动安装版本不匹配adb没有正确安装安卓驱动没有安装线材质量不好,断开 ......