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. vue 自定义全局方法

    import {myfun} from '../static/js/test.js' //se6的正确写法export default {methods:{ diyfun:function () { ...

  2. nginx+lua 设置跨域

    nginx 配置: header_filter_by_lua_file cros.lua; access_by_lua ' if ngx.var.request_method == "OPT ...

  3. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_17-课程预览功能开发-前后端测试

    启动前端代码 前端课程找到课程的发布页面 这样就打开了预览页面 结束

  4. 阶段5 3.微服务项目【学成在线】_day18 用户授权_05-方法授权-方法授权测试

    这是我们课程的服务里面 加了授权的方法 重启课程管理的服务 首先需要登陆 在redis复制token 访问课程列表 用最新复制的令牌 最新token可以 调用teachplan方法 调用 一个没加注解 ...

  5. tk.mybatis 报错:tk.mybatis.mapper.MapperException: tk.mybatis.mapper.MapperException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'apiLogMapper ...

  6. Treeview控件如何获得子节点的所有父节点的名称

    Delphi或c++ 的treeview控件,比如一个节点上面有个父节点,这个父节点上面还有一个父节点,如何获得这两个父节点的名字呢?请给出实现代码 先定义一个nodevarnode:TTreeNod ...

  7. (八)UML之状态图

    一.概念 状态图(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Act ...

  8. 【数据库开发】windows环境下通过c++使用redis

    1.Windows下Redis的安装使用 Redis是一个key-value存储系统.Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起 ...

  9. 配置node低版本支持ES7

    由于node的版本为6.*,不升级情况下,能使用ES7的 async await 特性, 在目录下 添加 start.js package.json里添加依赖配置 重新npm install 下载依赖 ...

  10. webkit浏览器下改变滚动条样式

    /*定义滚动条轨道 内阴影+圆角*/ ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); ba ...