【CCCC】L3-020 至多删三个字符 (30分),序列dp+去重
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+去重相关推荐
- L3-020 至多删三个字符 (30 分)(DP)
题目链接 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 10^6 ...
- L3-020 至多删三个字符 (30 分) DP
给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 106] 内的字符串. ...
- L3-020 至多删三个字符 (30 分)-PAT 团体程序设计天梯赛 GPLT
给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 106] 内的字符串. ...
- L3-020 至多删三个字符 (30 分)
题目: 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4,106][4,1 ...
- L3-020 至多删三个字符 (30分)(动态规划)
给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 10 ] 内的字 ...
- 至多删三个字符 (35分)
给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 106] 内的字 ...
- 团体程序设计天梯赛-练习集——L3-020 至多删三个字符
给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 106] 内的字符串. ...
- 至多删三个字符(动态规划字符串问题)
7-14 至多删三个字符 (35 分) 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长 ...
- L3-2 至多删三个字符
L3-2 至多删三个字符 题意: 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 题解: 最不擅长dp 我们设dp[i][j]表示前i里面删除j ...
最新文章
- 【机器学习】基于自适应变异粒子群算法的非线性函数寻优
- 又拍云递归删除目录及文件
- java推送数据给安卓,java – 如何从Firebase推送通知中获取数据并将其显示在Android Activity中?...
- Dictionary Union and Sort by value
- 【LeetCode】【字符串】题号:*640. 求解方程
- MSDN 访谈录(MSDN Show)C#编程
- python连接阿里云数据库_Python连接MySQL数据库教程演示
- 2022 年顶级网络安全专家最爱用的10大工具
- mac vscode debug安装调试moodle
- 中文核心期刊目录总览
- 百度富文本ueditor实现导入word并将内容显示到编辑器中
- H5 input 浮层 键盘遮挡
- JFugue4.0 中文说明
- LeetCode.495 Teemo Attacking
- 编写短信验证码(Java基础)
- 基于遥感影像的变化检测数据集
- python抠图教程_简单几行Python代码实现8秒抠图的AI神器,根本无需PS(附教程)...
- 清理 Snapd以释放磁盘空间
- 深度细节 | Go 的 panic 的秘密都在这
- 收到索尼4亿美元豪华大礼包 B站离百亿美元目标更进一步?
热门文章
- 深度学习基础(三)—— 权值矩阵的初始化
- 计算机网络 第七版 谢,计算机网络-谢仁-第7版-01章.pptx
- springboot 控制台输出错误信息_SpringBoot 三招组合拳,手把手教你打出优雅的后端接口...
- div自动滚动_简易数据分析 10 | Web Scraper 翻页——抓取「滚动加载」类型网页
- 国外大神一张图学会python-关于可以访问国外网站的浏览器的阿里云论坛用户知识和技术交流...
- python3下载-python3
- python入门指南txt-十分钟搞定 C/C++ 项目自动化构建 —— Xmake 入门指南
- python 菜鸟-Python3 列表
- 长虹智慧厨房解决方案,让你AI上智慧家居生活
- 视频语音识别_视频语音识别体验_视频语音识别试用 - 云+社区 - 腾讯云