首页 > 其他分享 >[DP 字符串 计数去重]L3-020 至多删三个字符

[DP 字符串 计数去重]L3-020 至多删三个字符

时间:2022-11-25 20:01:59浏览次数:45  
标签:MULINPUT typedef 删除 int LL L3 DP 020


[DP 字符串]L3-020 至多删三个字符

题目

[DP 字符串 计数去重]L3-020 至多删三个字符_初始化

思路

状态表示
集合
[DP 字符串 计数去重]L3-020 至多删三个字符_i++_02
属性:count(不包含重复)
状态计算:
删除第i个或者不删除第i个
[DP 字符串 计数去重]L3-020 至多删三个字符_i++_03

这题比较恶心的地方在于去重

aacdbb 删掉最后一个b和删除倒数第二个b是一样的

所以我们在删除第i个的时候要去重,去掉i前面的和第i位一样的(只要去1次就可以)

然后初始化的部分,递推过程中要直到上方和左上方

[DP 字符串 计数去重]L3-020 至多删三个字符_i++_04


红色是没法删除的,所以绿色开始初始化

[DP 字符串 计数去重]L3-020 至多删三个字符_i++_05

代码

#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
typedef long long LL;
typedef pair<int,int> PII;
//#define MULINPUT
/*DATA & KEY

*/
int T;
const int N=1E6+10;
char s[N];
LL f[N][4];
void solve(int C)
{
//NEW DATA CLEAN

//NOTE!!!
cin>>s+1;
int n=strlen(s+1);
for(int i=1;i<=n;i++)f[i][0]=1;//
for(int i=0;i<=3;i++)f[i][i]=1;//
for(int i=1;i<=n;i++)
for(int j=0;j<=3;j++)
{
if(i<j)break;
f[i][j]=f[i-1][j];
if(j>=1)f[i][j]+=f[i-1][j-1];

for(int k=i-1;k>=1&&j>=i-k;k--)
{
if(s[k]==s[i])
{
f[i][j]-=f[k-1][j-(i-k)];
break;
}
}

}

LL ans=0;
for(int i=0;i<=3;i++)ans+=f[n][i];
cout<<ans<<endl;
}

int main()
{
#ifdef MULINPUT
scanf("%d",&T);
for(int i=1;i<=T;i++)solve(i);
#else
solve(1);
#endif
return 0;
}


标签:MULINPUT,typedef,删除,int,LL,L3,DP,020
From: https://blog.51cto.com/u_15891800/5887711

相关文章

  • [DP 形状 线性]P1990 覆盖墙壁
    [DP形状线性]P1990覆盖墙壁​​题目链接​​思路把边界形状作为状态标识,类似杨老师照相序列那题为长度为i,状态为j的方案数目标是:代码//Problem:P1990覆盖墙壁//Con......
  • [DP 01背包/差值DP 存在性]小M和天平
    [DP01背包/差值DP存在性]小M和天平题目室友大佬去玩了蓝桥杯,听室友回寝口述的题目,然后水群的时候群友说和这题差不多就做一下。感觉和不久前做的差值DP有点关系。思路两种......
  • AT_hitachi2020_c ThREE
    AT_hitachi2020_cThREE简单构造题,考虑题目给个限制,那么就是不能存在\(i,j\),\(i\)到\(j\)的距离为\(3\)且\(p_i\equivp_j\pmod3\)且\(p_i,p_j\)不为\(3\)的倍数。......
  • [NEFU ACM] 2020级暑期训练 解题报告
    [NEFUACM]2020级暑期训练解题报告Author:2020-计6-zslID:FishingRod阅读须知需求指向:NEFU2020级ACM暑期训练参与人员解题报告博客偏向题解代码展示,解题视频偏向思路讲解......
  • DOS批处理中%cd%和%~dp0的区别
    %cd%和%~dp0的区别 在DOS的批处理中,有时候需要知道当前的路径。%cd%,一个是%~dp0。   这两个变量的用法和代表的内容是不同的。  %cd% ......
  • [oeasy]python0020换行字符_feed_line_lf_反斜杠n_B语言_安徒生童话
    ​ 换行字符 回忆上次内容struct包可以让我们使用封包格式把数字封包到字节里pack函数负责封包unpack函数负责解封我们通过封到不同的字节状态遍历了......
  • [dp 记录]P3349 [ZJOI2016]小星星
    绝世容斥好题,刚好NOIp前要复习容斥,就拉过来当100紫了。祝自己明天的NOIprp++这题好久前看过题解,感觉好可惜,浪费了好题。以后自己不会的题也不能看题解了。题意:......
  • WordPress编辑器支持Word自动上传
    ​ 1.4.2之后官方并没有做功能的改动,1.4.2在word复制这块没有bug,其他版本会出现手动无法转存的情况本文使用的后台是Java。前端为Jsp(前端都一样,后台如果语言不通得自己......
  • Waves Complete 11 for Mac(Waves全套混音插件包) v2020.11.12 完美激活版
    WavesCompleteformac是一款强大的音乐创作工具,含有各种混音插件,从运行速度到插件调用,性能和速度都大大提升,从混响,压缩,降噪和EQ到模拟硬件,环绕和后期制作工具,深受艺术家们......
  • 【iOS开发必备指南合集】申请企业级IDP、真机调试、游戏接入GameCenter 指南(实现仿官
    ​​ 李华明Himi ​​​原创,转载务必在明显处注明    这里Himi给出对于开发iOS的朋友们整理一个指南集合,其中主要包括申请IDP需要注意的地方、有了开发者证书如......