听课笔记--DP--Authentication Failed
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的更多相关文章
- smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed')解决办法
raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'Error: authentica ...
- javaMail使用163邮箱报535 Error: authentication failed
javaMail使用网易163邮箱或者是126或者是网易其他邮箱报535 Error: authentication failed javax.mail.AuthenticationFailedExc ...
- github提交失败并报错java.io.IOException: Authentication failed:
一.概述 我最近在写一个android的项目. 软件:android studio.Android studio VCS integration(插件) Android studio VCS inte ...
- IndexOf("authentication failed") > -1
if (e.Value.Error.Message.IndexOf("authentication failed") > -1) { strFailMessag ...
- (转载)postgresql navicat 客户端连接验证失败解决方法:password authentication failed for user
命令:su - postgres CREATE USER foo WITH PASSWORD 'secret'; ==================== 1.2个配置修改 postgresql.co ...
- pgadmin3 新建服务器出现错误 Peer authentication failed for user "postgres" 的解决办法
转自:http://blog.csdn.net/tingyuanss/article/details/43763899 用pgadmin3 新建服务器出现错误 Peer authentication ...
- MongoDB3.4安装配置以及与Robomongo1.1的连接——解决Authentication Failed导致的不能连接问题
本文环境:win10(64)+MongoDB(3.4.5)+Robomongo(1.1) 目录: MongoDB的安装 MongoDB的配置 Robomongo的安装以及与MongoDB的连接 一些新 ...
- fatal: Authentication failed for “someurl”
一.前言 我们在公司做项目,很多时候会遇到这个问题:Git failed with a fatal error. Authentication failed for ‘ http// xxx..... ...
- cs231n spring 2017 lecture9 CNN Architectures 听课笔记
参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的sh ...
随机推荐
- git notes的用法
1. notes翻译为中文评注 2. notes出现的作用 避免某一次commit的内容修改导致当前以及随后的commit发生变化,相当于在当前的commit后面追加一些信息,如: 某次commit的 ...
- python 经典排序算法
python 经典排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算 ...
- alpha测试和beta测试的区别是什么?
1.测试时间不同: Beta测试是软件产品完成了功能测试和系统测试之后,在产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段. alpha测试简称“α测试”,可以从软件产品编码结束之时开始, ...
- c# 遍历局域网计算机(电脑)获取IP和计算机名称
c#可以遍历局域网计算机,获取全部计算机的名称和IP地址,网上提供了相关的几种方法,并对效率进行了比较,但是没有对各种方法进行比较,以确定可以使用的情况.这篇文章将对这几种方法进行分析,以帮助了解各种 ...
- IDEA同一项目启动多个实例
为了验证负载均衡,服务提供者(EurekaClientServiceProviderApplication)需要启动多个实例,当前已启动了一个实例,端口号8762: -- :: --- [ main] ...
- delphi字符串分隔函数用法实例
这篇文章主要介绍了delphi字符串分隔函数用法,通过自定义函数SeparateTerms2实现将字符串分割后存入字符串列表的功能,具有一定的实用价值,需要的朋友可以参考下 本文实例讲述了delphi ...
- Tips for TMUX
常用命令 tmux ls # 显示后台session列表 tmux new -t [name] # 新建session tmux a -t [name] # 进入session tmux kill-s ...
- 使用Vulcan工具构建真实的业务负载进行网络压力测试,满足SD-WAN,White-box Switch的Performance,QoE,SLA测试要求
工具链接# https://xenanetworks.com/vulcan/ 使用Vulcan工具,可构建真实的业务负载进行网络压力测试 满足Performance,QoE,SLA等测试要求 硬件指 ...
- 微信jsapi开发应用实例并记录下错误信息
虽然大家已经有实例,但还是要根据自己的项目更改 在这里需要注意的几点 也是常常报错的 1.页面必须是UTF8(已经json不认gbk,所以会提醒 -1调用支付JSAPI缺少参数APPID 这是编码引起 ...
- Linux软件安装管理---源码安装
在Linux平台下,软件包的类型可以划分为两类:源码包.二进制包. 源码包: 即程序软件的源代码(一般也叫Tarball,即将软件的源码以tar打包后再压缩的资源包). 二进制包: 如 Red Hat ...