$f[i][j]$表示到第$i$个字符,已经删去了$j$个字符的方案数。

显然的转移:

$f[i][j] = f[i - 1][j] + f[i - 1][j - 1]$

但是这样会有重复,我们考虑什么情况会重复。

比如说:'aabab'中的'bab',我们删去'ba',得到'aab',删去'ab'得到'aab',两者是相同的

1 2 3 4 5

a a b a b

我们假设之前的每一位存的都是没有重复的方案数

就刚才的情况,我们发现当我们递推到第$5$个位置的时候,删去第三位和第四位的'ba',但是保留着第五位的'b'

那这种情况和递推到第$3$个位置的时候,保留着第$3$位的'd'是一样的

即:

$f[5][2] = f[2][0]$

$f[5][3] = f[2][1]$

减去这些重复情况,我们就能保证已经递推过来的情况中没有重复情况

 #include <bits/stdc++.h>
using namespace std; #define ll long long
#define N 1000010
int n;
char s[N];
int pos[];
ll f[N][]; int main()
{
while (scanf("%s", s + ) != EOF)
{
memset(pos, -, sizeof pos);
n = strlen(s + );
f[][] = ;
for (int i = ; i <= n; ++i)
{
int d = pos[s[i]];
pos[s[i]] = i;
f[i][] = f[i][] = ;
for (int j = ; j < ; ++j)
{
f[i][j] += f[i - ][j];
f[i][j + ] = f[i - ][j];
if (d != - && j - i + d >= )
f[i][j] -= f[d - ][j - i + d];
}
}
printf("%lld\n", f[n][] + f[n][] + f[n][] + f[n][]);
}
return ;
}

PTA 团体程序设计天梯赛 L3-020 至多删三个字符的更多相关文章

  1. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  2. PTA L2-001 紧急救援-最短路(Dijkstra)多条最短路找最优解并输出路径 团体程序设计天梯赛-练习集

    L2-001 紧急救援 (25 分)   作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...

  3. 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  4. 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  5. 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  6. 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  7. 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  8. 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  9. 团体程序设计天梯赛(CCCC) L3009 长城 方法证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

随机推荐

  1. Egret IDE中搜索,过滤文件,只搜索.ts

    刚开始忘了这个搜索条件在哪里打开了,后来找着了,记录一下 = =!

  2. 谷歌浏览器不能正常显示中文,chrome显示汉字问题

    用了几年的 chrome但是最近每次升级完flash就出现页面不能正常显示中文的现象. 在一个论坛上发现了处理办法如下: 1. 在谷歌浏览器的地址栏输入 chrome://flags/ 2. 在设置里 ...

  3. asp.net搭建mybatis开发环境

    mybatis其实就是ibatis的升级版本不仅能在java上使用,asp.net照样可以使用mybatis来开发程序.mybatis是一个比较小巧的ORM框架,类似hibernate.自己试了一下用 ...

  4. Shell case

    case 值 in模式1) command1 command2 command3 ;;模式2) command1 command2 command3 ;;*) command1 command2 co ...

  5. POJ 3368 & UVA 11235 - Frequent values

    题目链接:http://poj.org/problem?id=3368 RMQ应用题. 解题思路参考:http://blog.csdn.net/libin56842/article/details/4 ...

  6. 【技术分享】Java 序列化与反序列化安全分析

    唯品会安全应急响应中心 https://mp.weixin.qq.com/s?src=11&timestamp=1546915765&ver=1317&signature=mW ...

  7. Qt Creator 4.3.0,Quick Designer里面也看以同时看到和编辑qml code了(Qt5.9的配套IDE)

    作者:Summer Fang链接:https://www.zhihu.com/question/60486611/answer/177584284来源:知乎著作权归作者所有.商业转载请联系作者获得授权 ...

  8. LeetCode 第 342 题(Power of Four)

    LeetCode 第 342 题(Power of Four) Given an integer (signed 32 bits), write a function to check whether ...

  9. CentOS代理设置

    1.全局的代理设置: vi /etc/profile 添加下面内容 http_proxy = http://username:password@yourproxy:8080/ftp_proxy = h ...

  10. oracle行转列,列转行

    多行转字符串这个比较简单,用||或concat函数可以实现 SQL Code select concat(id,username) str from app_userselect id||userna ...