problem

L3-020 至多删三个字符 (30分)
给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 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”。

  • 给出一个字符串,删除至多3个字符之后不同的字符串个数。
  • len<1e6

solution

  • 爆搜set维护??O(n^3*nlogn)!!
  • 状态:f[i][j]表示到i为止删除了j个字符的不同个数
  • 转移:f[i][j] = f[i-1][j]+f[i-1][j-1],代表第i个字符删还是不删
  • 去重:比如字符串abcbe,删除bc和删除cb得到的结果一样,删除abc和删除acb的结果也一样。所以删bc和cb前的那一段(也就是到a为止删了1个字符的dp值)被计算了两次,把他们删掉就可以了。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1e6+10;
LL f[maxn][5];
int main(){string s;  cin>>s; s = "0"+s;//从1开始f[0][0] = 1;for(int i = 1; i < s.size(); i++){for(int j = 0; j <= 3; j++){//删0-3个f[i][j] = f[i-1][j]+f[i-1][j-1];//第i个删还是不删for(int k=i-1; k>=1 && (i-k)<=j; 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[s.size()-1][i];cout<<ans<<endl;return 0;
}

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

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

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

  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. 至多删三个字符 (35分)

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

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

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

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

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

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

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

最新文章

  1. 【机器学习】基于自适应变异粒子群算法的非线性函数寻优
  2. 又拍云递归删除目录及文件
  3. java推送数据给安卓,java – 如何从Firebase推送通知中获取数据并将其显示在Android Activity中?...
  4. Dictionary Union and Sort by value
  5. 【LeetCode】【字符串】题号:*640. 求解方程
  6. MSDN 访谈录(MSDN Show)C#编程
  7. python连接阿里云数据库_Python连接MySQL数据库教程演示
  8. 2022 年顶级网络安全专家最爱用的10大工具
  9. mac vscode debug安装调试moodle
  10. 中文核心期刊目录总览
  11. 百度富文本ueditor实现导入word并将内容显示到编辑器中
  12. H5 input 浮层 键盘遮挡
  13. JFugue4.0 中文说明
  14. LeetCode.495 Teemo Attacking
  15. 编写短信验证码(Java基础)
  16. 基于遥感影像的变化检测数据集
  17. python抠图教程_简单几行Python代码实现8秒抠图的AI神器,根本无需PS(附教程)...
  18. 清理 Snapd以释放磁盘空间
  19. 深度细节 | Go 的 panic 的秘密都在这
  20. 收到索尼4亿美元豪华大礼包 B站离百亿美元目标更进一步?

热门文章

  1. 深度学习基础(三)—— 权值矩阵的初始化
  2. 计算机网络 第七版 谢,计算机网络-谢仁-第7版-01章.pptx
  3. springboot 控制台输出错误信息_SpringBoot 三招组合拳,手把手教你打出优雅的后端接口...
  4. div自动滚动_简易数据分析 10 | Web Scraper 翻页——抓取「滚动加载」类型网页
  5. 国外大神一张图学会python-关于可以访问国外网站的浏览器的阿里云论坛用户知识和技术交流...
  6. python3下载-python3
  7. python入门指南txt-十分钟搞定 C/C++ 项目自动化构建 —— Xmake 入门指南
  8. python 菜鸟-Python3 列表
  9. 长虹智慧厨房解决方案,让你AI上智慧家居生活
  10. 视频语音识别_视频语音识别体验_视频语音识别试用 - 云+社区 - 腾讯云