Authentication Failed

https://www.codechef.com/problems/AUTHEN/

从一个长为N+K的由小写字母组成的字符串中删去K个字符,

可以得到多少种不同的字符串?

输出答案减1

N<=10000, K<=100

样例输入:

3

2 1

aaa

3 1

abcd

4 2

ababab

样例输出:

0

3

10

方案的最小表示:

abcb:计入答案

abcb:不计入答案

每种方案只在最早出现的位置计入答案


f[i,j]表示前i个字符内去掉了j个字符,且第i个字符被保留,此时的方案数
如果保留第i位,

则上一个被保留的位与i之间不能有和第i位相同的字符
否则就不是最小表示

例:

(假设正在算f[6,3])

## abcadc

f[6,3]=f[5,3]+f[4,2]+f[3,1];

此时在计算保留第六位,前面删去了3个;

所以它可以直接由f[5][3](上一位保留第五位d,即第六位与第五位之间没有删去字符)转移来;

也可以由f[4][2](上一位保留第四位a,中间删去d)转移来;

还可以由f[3][1](上一位保留第三位c,中间删去两个字符a,d)转移来;

那为什么不可以又f[2][0]转移来呢?答案是显然的,此时,我们是按题目要求(每种方案只在最早出现的位置计入答案)从左到右转移来的,当前面在枚举到第三位c时,已经有了abc或bc这一种状态。故:

上一个被保留的位与i之间不能有和第i位相同的字符

否则就不是最小表示


首先,我们要预处理对于每个字符与它相同的字符的位置。

然后在转移时难道要从那里开始一个个遍历吗?

同时通过此图我们发现,我们只需维护斜着的前缀和,这样状态转移可以在O(1)内完成。

听课笔记--DP--Authentication Failed的更多相关文章

  1. smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed')解决办法

    raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'Error: authentica ...

  2. javaMail使用163邮箱报535 Error: authentication failed

    javaMail使用网易163邮箱或者是126或者是网易其他邮箱报535 Error: authentication failed javax.mail.AuthenticationFailedExc ...

  3. github提交失败并报错java.io.IOException: Authentication failed:

    一.概述 我最近在写一个android的项目. 软件:android studio.Android studio VCS integration(插件) Android studio VCS inte ...

  4. IndexOf("authentication failed") > -1

    if (e.Value.Error.Message.IndexOf("authentication failed") > -1)   {      strFailMessag ...

  5. (转载)postgresql navicat 客户端连接验证失败解决方法:password authentication failed for user

    命令:su - postgres CREATE USER foo WITH PASSWORD 'secret'; ==================== 1.2个配置修改 postgresql.co ...

  6. pgadmin3 新建服务器出现错误 Peer authentication failed for user "postgres" 的解决办法

    转自:http://blog.csdn.net/tingyuanss/article/details/43763899 用pgadmin3 新建服务器出现错误 Peer authentication ...

  7. MongoDB3.4安装配置以及与Robomongo1.1的连接——解决Authentication Failed导致的不能连接问题

    本文环境:win10(64)+MongoDB(3.4.5)+Robomongo(1.1) 目录: MongoDB的安装 MongoDB的配置 Robomongo的安装以及与MongoDB的连接 一些新 ...

  8. fatal: Authentication failed for “someurl”

    一.前言 我们在公司做项目,很多时候会遇到这个问题:Git failed with a fatal error. Authentication failed for ‘ http// xxx..... ...

  9. cs231n spring 2017 lecture9 CNN Architectures 听课笔记

    参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的sh ...

随机推荐

  1. java模拟post进行文件提交 采用httpClient方法

    package com.jd.vd.manage.util.filemultipart; import java.io.BufferedReader;import java.io.File;impor ...

  2. ubuntu系统调整时区和时间

    date: 2019-05-30  10:14:23 author:headsen  chen 个人原创博客,转录需要注明作者和出处. 1,安装ntpdate,同步标准时间 root@hk-confl ...

  3. 一百四十六:CMS系统之帖子按照发布时间和评论数量排序

    按照不同选项进行排序 视图 @bp.route('/')def index(): board_id = request.args.get('board_id', type=int, default=N ...

  4. iOS笔试题02

    1. Difference between shallow copy and deep copy? 1> 浅拷贝:指针(地址)拷贝,不会产生新对象 2> 深拷贝:内容拷贝,会产生新对象 2 ...

  5. Qt598x64vs2017.Kit(构建套件)(安装Qt598x86vs2015)

    1.Qt598-->工具-->选项 1.1. 1.2. 2.20191120 想起 上面第一张图的配置编译器的地方,就想着 Qt598x64vs2017 配置成编译x86,于是将 上面图中 ...

  6. Nginx基本使用方法

    原帖:http://zyjustin9.iteye.com/blog/2017394 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人 ...

  7. location匹配禁止页面缓存

    php禁止页面缓存的办法 //设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可. add_header Expires: Mon, 26 Jul 1997 05:00:00 GMT ...

  8. 【leetcode算法-简单】53. 最大子序和

    [题目描述] 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:  ...

  9. [转帖]英特尔首次使用其3D堆叠架构演示Lakefield芯片设计

    英特尔首次使用其3D堆叠架构演示Lakefield芯片设计 http://www.chinapeace.org.cn/keji/201904/2812749.html 这段时间学习最大的收获: . 发 ...

  10. plsql中文乱码 显示问号

    输入sql语句select * from V$NLS_PARAMETERS查看字符集,查看第一行value值是否为简体中文 解决方案: 新增环境变量 变量名: NLS_LANG 变量值: SIMPLI ...