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. decimal赋值

    decimal dRebate1 = new decimal(1);decimal dRebate2 = Convert.ToDecimal(1);decimal dRebate3 = 1M; htt ...

  2. CNCF基金会的Certified Kubernetes Administrator认证考试计划

    关于CKA考试 CKA(Certified Kubernetes Administrator)是CNCF基金会(Cloud Native Computing Foundation)官方推出的Kuber ...

  3. 开启windows ping端口功能

    1.打开控制面板,选择程序 2.选择打开和关闭windows功能 3.将Tenet客户端选项勾上 4.运行栏中输入cmd,进入到命令窗口 5.输入命令   ping    ip地址     端口号  ...

  4. Linux使用shell解压tar.Z格式文件

    建设当前目录下有一个名为test.tar.Z的文件. 使用如下指令可以将其解压,并将解压后的所有文件放置在当前目录下: zcat test.tar.Z | tar -xvf - 如果想要将解压缩的文件 ...

  5. Ubuntu16.04下KeepAlived+Nginx 布署

    前言         网上已经有很多相关文章,对各种概念介绍的比较清楚,也有各种详细的步骤,这里主要记录本要在ubuntu16.04下的布署过程,主要记录编译安装keepalived时遇到的坑及解决办 ...

  6. OpenLayers 根据坐标动态画多边形

    找了一上午,发现都是鼠标点击画框的,那为什么不标明了是 “鼠标”点击 呢? 想实现的功能是数据库检索坐标集合,然后根据分组提取4点坐标,最后把多个多边形形成图层放在地图上. 最后的实现: <!D ...

  7. vue {{}}的用法

    参考链接:https://blog.csdn.net/cofecode/article/details/78666233

  8. 获取radio点击事件

    获取radio点击事件,不能用click(),而是用change(). $('input[name="options"]').change(function(){ console. ...

  9. SCART概念

    SCART(Syndicat des Constructeursd' Appareils Radiorécepteurs et Téléviseurs)接口是一种专用的音视频接口,它是由法国公司Per ...

  10. SourceTree使用图解

    看完这篇文档你能做到的是: 1.简单的用Git管理项目. 2.怎样既要开发又要处理发布出去的版本bug情况. SourceTree是一个免费的Git图形化管理工具,mac下也可以安装. 下载地址:ht ...