给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串?
输入格式:
输入在一行中给出全部由小写英文字母组成的、长度在区间 [4, 10​6​​] 内的字符串。
输出格式:
在一行中输出至多删掉其中 3 个字符后不同字符串的个数。
输入样例:

ababcc

输出样例:

25

提示:
删掉 0 个字符得到 “ababcc”。
删掉 1 个字符得到 “babcc”, “aabcc”, “abbcc”, “abacc” 和 “ababc”。
删掉 2 个字符得到 “abcc”, “bbcc”, “bacc”, “babc”, “aacc”, “aabc”, “abbc”, “abac” 和 “abab”。
删掉 3 个字符得到 “abc”, “bcc”, “acc”, “bbc”, “bac”, “bab”, “aac”, “aab”, “abb” 和 “aba”。

参考了大佬的做法,稍微复杂一点的01背包
讨论前I的字符下删除j个字符的情况
还是分为包含第i个与不包含第i个两种情况
这里因为下面有去重操作我们假定他们都是正确的,相加就好了
然后就要去重,注意怎么去重,在j的范围内找与i相同的字符,如果找到了就会重复,(因为我们从1开始,到后面前面一定都是去完重的),在j的范围内才会出现重复现象,然后如果找到就删除它占用的次数就好了dp[i][j]-=dp[k-1][j-(i-k)];

想要删除不同的字符结果相等,只有在两个相同值构成的区间长度小于等于j的时候可以办到

#include<bits/stdc++.h>
using namespace std;
#define N 200005
char s[N];
long long  dp[N][5];
int main()
{scanf("%s",s+1);int len=strlen(s+1);dp[0][0]=1;for(int i=1;i<=len;i++){for(int j=0;j<=3;j++){if(j) dp[i][j]+=dp[i-1][j-1];dp[i][j]+=dp[i-1][j];for(int k=i-1;k>0&&j>=i-k;k--){if(s[i]==s[k]){dp[i][j]-=dp[k-1][j-(i-k)];break;}}}}printf("%lld\n",dp[len][0]+dp[len][1]+dp[len][2]+dp[len][3]);return 0;
}

至多删三个字符 (35分)相关推荐

  1. 【CCCC】L3-020 至多删三个字符 (30分),序列dp+去重

    problem L3-020 至多删三个字符 (30分) 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写 ...

  2. L3-020 至多删三个字符 (30 分) DP

    给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 106] 内的字符串. ...

  3. L3-020 至多删三个字符 (30 分)-PAT 团体程序设计天梯赛 GPLT

    给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 106] 内的字符串. ...

  4. L3-020 至多删三个字符 (30 分)

    题目: 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4,106][4,1 ...

  5. L3-020 至多删三个字符 (30分)(动态规划)

    给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 10​​​ ] 内的字 ...

  6. L3-020 至多删三个字符 (30 分)(DP)

    题目链接 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 10^​6​ ...

  7. 至多删三个字符(动态规划字符串问题)

    7-14 至多删三个字符 (35 分) 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长 ...

  8. 团体程序设计天梯赛-练习集——L3-020 至多删三个字符

    给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 106] 内的字符串. ...

  9. L3-2 至多删三个字符

    L3-2 至多删三个字符 题意: 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 题解: 最不擅长dp 我们设dp[i][j]表示前i里面删除j ...

最新文章

  1. 数据解析1:XML解析(2)
  2. 确保字符串的每个单词首字母都大写,其余部分小写
  3. sass和less的优缺点
  4. Java设计模式之行为型:备忘录模式
  5. QFile练习(20200213)
  6. PHP 单一入口程序
  7. html性别选项卡,html选项卡
  8. self php语法,PHP代码审计之关于PHP_SELF的简单利用
  9. AI来袭程序猿是否该学习Python了
  10. Qgis3.2编译移植成功文档完整版
  11. LAMP的部署(一)
  12. Ajax无刷新实现省市联动,并在回发后保留省市下拉框状态
  13. C# 最简单的异步委托
  14. 计算机语言疾病矫治操作流程,言语矫治专家决策系统的构建.doc
  15. linux tuxedo查看服务进程数,Tuxedo 运行监控命令
  16. Android CameraX适配Android11的踩坑之路
  17. 加工生产调度(贪心)
  18. Bugzilla的使用
  19. MySQL基础(附练习题+答案)
  20. jvm 年轻代、年老代、永久代

热门文章

  1. c语言 程序开机自启
  2. 强制重启Linux系统的几种方法
  3. 解析HTTPS加密原理
  4. 正则化,岭回归Shrinkage,lasso稀疏性推导和论文总结
  5. Git 2.38发布,引入巨型仓库管理工具Scalar
  6. TypeScript报错信息表(备注)
  7. 定时器:setTimeout()
  8. 计算机丢失softwareinspect,logo1 systemInspect山泉查不到。。。和顶的又不一样[求助】...
  9. 虚函数和纯虚函数及虚函数表
  10. 数据库CREATE TRIGGER 触发器