题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805046946938880

学习地址:

2018CCCC-L3-2:至多删三个字符(DP) - Mitsuha_的博客 - CSDN博客

题目大意:给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串?

具体思路:

dp[i][j]表示前i个字符去除j个字符所形成的的不同的子串,然后对于每一次i的移动,

dp[i][j+1]+=dp[i-1][j].前i个字符去除j+1个字符等于前i-1个字符去除j个字符的情况。

dp[i][j]+=dp[i-1][j].前i个字符去除j个字符等于 前i-1个字符去除j个字符的情况。

然后再就是去重的过程,对于cdabnaxy这个字符串,当我们去除abn和去除bna的时候,所形成的的字符都是一样的,暂时将第一个a的下标定位k,第二个a的下标定位j. 我们应该去除的情况是第一个a字符前面去除(j-3)个字符的情况.

AC代码:

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

L3-020 至多删三个字符 (30 分)(DP)的更多相关文章

  1. pta l3-20(至多删三个字符)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805046946938880 题意:给定一个长度<=106 ...

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

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

  3. L3-020 至多删三个字符 (30 分) 线性dp

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

  4. PAT L3-020 至多删三个字符

    https://pintia.cn/problem-sets/994805046380707840/problems/994805046946938880 给定一个全部由小写英文字母组成的字符串,允许 ...

  5. PTA L3-020 至多删三个字符 (序列dp/序列自动机)

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

  6. PTA 团体程序设计天梯赛 L3-020 至多删三个字符

    $f[i][j]$表示到第$i$个字符,已经删去了$j$个字符的方案数. 显然的转移: $f[i][j] = f[i - 1][j] + f[i - 1][j - 1]$ 但是这样会有重复,我们考虑什 ...

  7. PAT 甲级 1068 Find More Coins (30 分) (dp,01背包问题记录最佳选择方案)***

    1068 Find More Coins (30 分)   Eva loves to collect coins from all over the universe, including some ...

  8. [leetcode]680. Valid Palindrome II有效回文II(可至多删一原字符)

    Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...

  9. 1068 Find More Coins (30分)(dp)

    Eva loves to collect coins from all over the universe, including some other planets like Mars. One d ...

随机推荐

  1. JS with

    <script type="text/javascript"> function Dog(){ this.type="dog"; this.tail ...

  2. hystrix实战总结;

    HystrixCircuitBreaker 有三种状态 : 断路器默认是20个请求失败才打开短路器,可以进行配置: CLOSED :关闭 OPEN :打开 HALF_OPEN :半开 1.接口正确,接 ...

  3. (线性dp,LCS) POJ 1458 Common Subsequence

    Common Subsequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 65333   Accepted: 27 ...

  4. phpcms 标签含义大全

    {template "content","header"}   ----------  调用根目录下phpcms\template\content\header ...

  5. 如何打开.lxe文件

    介绍两款播放器: 第一款:PotPlayer,这款软件快进看学习视频特特别方便. 软件的下载地址:链接:http://potplayer.daum.net/?lang=zh_CN 第二款:屏幕录像专家 ...

  6. kettle连接mysql数据库并进行数据分析

    1.数据库链接驱动 如果没有安装对应的数据库链接驱动,在数据库链接的过程中,可能会报某个数据库连接找不到的异常,因此需要下载对应驱动后(安装步骤可以参见“怎么在官网上下载java连接mysql的驱动j ...

  7. numpy知识点

    1.nonzero 对于一维数据来说,将返回符合条件的 下标 >>> b1 = np.array([True, False, True, False]) >>> n ...

  8. I/O模型之二:Linux IO模式及 select、poll、epoll详解

    目录: <I/O模型之一:Unix的五种I/O模型> <I/O模型之二:Linux IO模式及 select.poll.epoll详解> <I/O模型之三:两种高性能 I ...

  9. JAVA核心技术I---JAVA基础知识(异常处理类)

    一:异常分类 Throwable:所有错误的祖先. Error:系统内部错误或者资源耗尽.不用我们管 Exception: 程序有关的异常.重点关注 –RuntimeException: 程序自身的错 ...

  10. vscode Live Server使用

    vscode 的Live Server插件可以开启本地服务器