Bestcoder #92
A
=w=
B
计数题,枚举A、C,算B、D的个数,注意减去重复的
我当时是f[1][n]->f[2][n]->f[3][n]->f[4][n]递推的
C
题意:长为n的字符串仅由'2' '3'组成,有m次交换机会,每次交换相邻的两个位置,求最终可以有多少个"233"子串(n<=100,m<=50)
分析:dp
首先明确的是,交换只可能交换相邻的2、3
考虑最终的状态,肯定是一些2,在这些2中间有若干个3,这些2的相对位置和刚开始的字符串相同
f[i][j][k]表示第i个2,所在新字符串位置是j,用了k次交换,带来的最大233串个数
那么很明显f[i][j][k]=max(f[i-1][j'][k]+(j-j'>=3)) (j==p[i])
f[i][j][k]=max(f[i-1][j'][k-abs(p[i]-j)]+(j-j'>=3)) (j!=p[i])
这样复杂度是O(n^3 * m)的
其实仔细分析,对于上一个2,我们需要记录的并不是上一个2和这一个2之间3的确切个数,我们只关心上一个2和这一个2之间的3的个数是0、1或者大于等于2 这三种情况
因为233、2333、23333对答案的贡献是一样的
那么这样就应该有O(n^2 * m)的做法
考虑将所有2单独挑出来,将所有3单独挑出来,那么最后的结果就是2和3的归并
f[i][j][k][0..2]表示用了i个2,用了j个3,用了k次交换,对应状态是0、1、2情况下最多233子串个数
t=0表示此时最后一个2后面有足够的3(>=2)
t=1表示此时最后一个2后面没有3
t=2表示此时最后一个2后面有1个3
通过这个进行转移
D
待补
Bestcoder #92的更多相关文章
- BestCoder Round #92 比赛记录
上午考完试后看到了晚上的BestCoder比赛,全机房都来参加 感觉压力好大啊QAQ,要被虐了. 7:00 比赛开始了,迅速点进了T1 大呼这好水啊!告诉了同桌怎么看中文题面 然后就开始码码码,4分1 ...
- BestCoder Round #92 1001 Skip the Class —— 字典树 or map容器
题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=748&pid=1001 题解: 1.trie树 关 ...
- BestCoder Round #92 1002 Count the Sheep —— 枚举+技巧
题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=748&pid=1002 题解: 做题的时候只是想到 ...
- BestCoder Round #92 (hdu_6015 6016)
比赛链接 A题主要是map的使用,比赛的时候问了下队友,下次要记住了 #include<bits/stdc++.h> using namespace std; typedef long l ...
- BestCoder Round #92
这里是逢比赛必挂的智障选手ysf…… 不知道是因为自己菜还是心态不好……也许是后者吧,毕竟每次打比赛的时候都会很着急.lrd说我打比赛的功利性太强,想想确实是这样. 昨天打完之后自觉身败名裂没敢写出来 ...
- HDU_6016_(Bestcoder round #92 1002)_(dfs)(暴力)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6016 题意:给定男羊和女羊的朋友关系,即给定一个图,问从任意一只羊开始连续数四只不相同的羊的方法数. ...
- BestCoder Round #92 (hdu 6015 6016)
比赛链接 A题主要是map的使用,比赛的时候问了下队友,下次要记住了 #include<bits/stdc++.h> using namespace std; typedef long l ...
- [BestCoder Round #3] hdu 4908 BestCoder Sequence (计数)
BestCoder Sequence Problem Description Mr Potato is a coder. Mr Potato is the BestCoder. One night, ...
- 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)
建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...
随机推荐
- 关于Android皮肤更换分享
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=264902&highlight=%E6%8D%A2%E8%82%A4&a ...
- redis 配置多个ip 解决方案
因为在 redis 中bind 指定的ip 其实为同一网段或localhost 监听ip,在这里配置 内网其他网段或者外网多个ip 后 重启 redis 是不会成功的, 这边建议使用 折中方案,开通 ...
- Java 8 (5) Stream 流 - 收集数据
在前面已经使用过collect终端操作了,主要是用来把Stream中的所有元素结合成一个List,在本章中,你会发现collect是一个归约操作,就像reduce一样可以接受各种做法作为参数,将流中的 ...
- jQuery伪分页效果
如图,我们首先分析在一个页面存放4条内容,其余的超出隐藏(因为这里没有后台数据,所以我们把内容‘写死’),然后就是下面两个按钮(这里我们不用button,因为button有自带的提交功能),然后我们可 ...
- sublime 自定义快捷键
[ { "keys": ["alt+space"], "command": "auto_complete" }, // ...
- PSP需求分析文档
PSP软件需求分析文档 刘杰 1. 引言 1.1 背景 开发项目经常延期不能按时提交,甚至不能给出明确的延迟时间 1.2 术语 PSP,数据库 2. 任务概述 2.1 目 ...
- hashtable的用法
C#中哈希表(HashTable)的用法详解 1. 哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器 ...
- 创建密码带有特殊字符的dblink
使用的是data studio,所以末尾不加分号 create database link link_to_143 connect " using '(DESCRIPTION = (ADDR ...
- JavaScript判断
if...else: if...else语句是在指定的条件成立时执行的代码,在条件不成立时执行else后的代码. 语法: if(条件) {条件成立时执行的代码 }else{ 条件不成立的时执行的代码} ...
- Jmeter的属性和变量
jmeter的属性和变量可以简单理解为编程里面的全局变量和局部变量.属性是全局可见,可以跨线程组传递调用,而变量基本上只能存在于一个线程组中(在测试计划定义的变量也是可以跨线程组传递的).同线程组内的 ...