L3-020 至多删三个字符 [DP]
这题在网上看到一个非常容易理解的思路,和大家分享一下。
记dp[i][j]为前i个字符删除j个字符后得到不同字符串的数量,可以得到以下两个转移方程
dp[i][j+1]=dp[i][j+1]+dp[i-1][j] (删除s[i])
dp[i][j]=dp[i][j]+dp[i-1][j] (不删除s[i])
如果只用上述式子,是会重复的。比如abcdecf,删除cde得到abcf,删除dec得到的也是abcf。
所以要删除重复计算的。从当前的i向左扫,扫到的第一个与s[i]相同的字符时处理,假设为s[k],那么dp[i][j]=dp[i][j]-dp[k-1][j-(i-k)]。
#include<iostream> #include<cstdio> #include<string.h> #include<math.h> #define maxn 1000005 using namespace std; typedef long long ll; char s[maxn]; ll dp[maxn][5]; int main() {scanf("%s",s+1);int l=strlen(s+1);dp[0][0]=1;for(int i=0;i<=l;i++){for(int j=0;j<=3;j++){if(dp[i-1][j]==0)continue;if(j<3)dp[i][j+1]+=dp[i-1][j];dp[i][j]+=dp[i-1][j];for(int k=i-1;k>=1&&i-k<=j;k--){if(s[k]==s[i]){dp[i][j]-=dp[k-1][j-i+k];break;//如果有多个,因为是从前往后推的,所以在前面减过了 }}}}printf("%lld\n",dp[l][0]+dp[l][1]+dp[l][2]+dp[l][3]);return 0; }
View Code
转载于:https://www.cnblogs.com/FTA-Macro/p/10472057.html
L3-020 至多删三个字符 [DP]相关推荐
- 程序设计天梯赛L3-20 至多删三个字符(dp,一生之敌)
题目 题意: 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串?(|S|<=1e6) 思路: 可以暴力水分,pta数据比较水,用set把所有删 ...
- 【CCCC】L3-020 至多删三个字符 (30分),序列dp+去重
problem L3-020 至多删三个字符 (30分) 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写 ...
- L3-2 至多删三个字符
L3-2 至多删三个字符 题意: 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 题解: 最不擅长dp 我们设dp[i][j]表示前i里面删除j ...
- 至多删三个字符(动态规划字符串问题)
7-14 至多删三个字符 (35 分) 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长 ...
- PTA-至多删三个字符-(dp+容斥)
至多删三个字符 题意: 就是给你一个字符串,然后你最多可以删掉3个字符,问你最终可以形成多少种不用的字符串. 思考: 刚开始看到其实没啥想法,要么就是暴力.但是仔细思考一下,这种题貌似没有什么偏僻的做 ...
- 团体程序设计天梯赛-练习集——L3-020 至多删三个字符
给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 106] 内的字符串. ...
- L3-020 至多删三个字符 (30 分) DP
给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 106] 内的字符串. ...
- L3-020 至多删三个字符 (30 分)(DP)
题目链接 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 10^6 ...
- CCCC/PTA 2019模拟赛 L3-3 至多删三个字符
这篇博文是本蒟蒻第一次写CSDN博客. 旨在熟悉一下CSDN博客的使用方式. 写的不好,各位客官见笑了 本篇写的题是今年4月份(具体时间记不清了)的一次模拟赛的L3-3 现在是PTA的CCCC练习集中 ...
最新文章
- socket的长连接与短连接
- Kotlin极简教程:第7章 面向对象编程
- tensorflow linux多卡训练_用Windows电脑训练深度学习模型?超详细配置教程来了
- php 星号邮箱,PHP以星号隐藏用户名手机号码和邮箱实例
- JavaScript 常用功能总结
- CSS基础常识问答(二)
- 市场上各种深度摄像头测试之华捷艾米A100
- (Java)学习笔记1---入门篇
- C++实现RS485通信
- php搜索引擎开源源码,PHP搜索引擎源代码
- 路由 OSPF LSA介绍、1~7类LSA详细介绍
- 小苹果蹿红背后的网络营销思考
- EventBridge 集成云服务实践
- 解决Windows10英文版中文字体难看、时大时小、中文比英文小等问题
- Android实现计时与倒计时(限时抢购)
- Acwing算法基础课知识点
- 小羊驼和你一起学习cocos2d-x与lua之四(泛型for学习)
- python 100以内3的倍数_关于算法:如何在Python中找到低于1000的3或5的所有倍数的总和?...
- “东数西算”数据中心下算力、AI智能芯片如何发展?
- 5G技术中的无源光器件(二)
热门文章
- Linux 命令之 newgrp -- 登入另一个群组
- display和show的区别
- 服务器$java_top路径_ERP实施项目-MD120_FIN000_即时打印_V1.0
- postgresql删除索引_PostgreSQL 13 发布,索引和查找有重大改进
- sql 返回日期的年月部分_公示|2020年11月部分志愿活动名单公示
- LeetCode 01. 两数之和
- 如何导出久其报表所有数据_如何选择好的HR软件
- python float 精度_浅谈Python里面小数点精度的控制
- Python3最长连续递增序列问题
- html的页面宽高变形问题,CSS+div 设计的网页在不同浏览器中变形的问题