HDU 6017 Girls Love 233(多态继承DP)
【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=6017
【题目大意】
给出一个只包含2和3的串,你可以花费两个智力值交换相邻的两个字符
问在智力值不降到负数的情况下,可以产生多少个233子串
【题解】
dp[i][j][k][t]表示在放入前i+j串用了i个2和j个3代价为k,结尾状态为t的最优答案
t状态分别为2,23,233三种状态,我们在这个题目中,2和3内部都是不会发生交换的
所以代价只为2和3交换的次数,等价于最后每个2的末位置和初位置的差值,
枚举2和3的数量,代价和状态,dp即可
【代码】
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
#define REP(i,a,b) for(int i=a;i<=b;i++)
const int N=110,inf=0x3f3f3f3f;
int T,n,m,x,y,dp[N][N][N][3],a[N];
char s[N];
void up(int &a,int b){if(a<b)a=b;}
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d%s",&n,&m,s+1); m/=2;
int ca=0,cb=0;
REP(i,1,n)if(s[i]=='2')a[++ca]=i;else cb++;
REP(i,0,ca)REP(j,0,cb)REP(k,0,m)REP(t,0,2)dp[i][j][k][t]=-inf;
dp[0][0][0][0]=0;
REP(i,0,ca)REP(j,0,cb)REP(k,0,m)REP(t,0,2)if(dp[i][j][k][t]>=0){
if(i<ca){
int x=k+abs(i+j+1-a[i+1]);
if(x<=m)up(dp[i+1][j][x][1],dp[i][j][k][t]);
}
if(j<cb){
int x=t,y=dp[i][j][k][t];
if(x)if(x<2)x++;else x=0,y++;
up(dp[i][j+1][k][x],y);
}
}int ans=0;
REP(k,0,m)REP(t,0,2)up(ans,dp[ca][cb][k][t]);
printf("%d\n",ans);
}return 0;
}
HDU 6017 Girls Love 233(多态继承DP)的更多相关文章
- 【HDU 6017】 Girls Love 233 (DP)
Girls Love 233 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- Girls Love 233
Girls Love 233 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) P ...
- hdu 5025 Saving Tang Monk 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092939.html 题目链接:hdu 5025 Saving Tang Monk 状态压缩 ...
- HDU 3016 Man Down (线段树+dp)
HDU 3016 Man Down (线段树+dp) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- HDU 3341 Lost's revenge AC自动机+dp
Lost's revenge Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)T ...
- 多态(upcast)减少分支判断 以及 多态继承设计、具体类型判断。
Influenced by <java 八荣八耻>,翻了下<java编程思想> 印象中多态产生的条件:1.子类继承父类 2.父类[指针]指向子类 3.父类引用调用重写(@Ove ...
- HDU 2457 DNA repair(AC自动机+DP)题解
题意:给你几个模式串,问你主串最少改几个字符能够使主串不包含模式串 思路:从昨天中午开始研究,研究到现在终于看懂了.既然是多模匹配,我们是要用到AC自动机的.我们把主串放到AC自动机上跑,并保证不出现 ...
- HDU 1028 Ignatius and the Princess III dp整数划分
http://acm.hdu.edu.cn/showproblem.php?pid=1028 dp[i][j]表示数值为i,然后最小拆分的那个数是j的时候的总和. 1 = 1 2 = 1 + 1 . ...
- Hdu 3294 Girls' research (manacher 最长回文串)
题目链接: Hdu 3294 Girls' research 题目描述: 给出一串字符串代表暗码,暗码字符是通过明码循环移位得到的,比如给定b,就有b == a,c == b,d == c,.... ...
随机推荐
- BZOJ1202:狡猾的商人(带权并查集)
1202: [HNOI2005]狡猾的商人 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1202 Description: 刁姹接到一个 ...
- ng父组件调用子组件的方法
https://www.pocketdigi.com/20170204/1556.html 组件之间方法的调用统一用中间人调用.数据传递直接input和output即可
- mysql————表类型(存储引擎)的选择
表类型(存储引擎)的选择 7.1 mysql存储引擎概述 插件式存储引擎是mysql数据库最重要的特性之一,用户可以根据应用的需要选择ruhr存储和索引数据,是否使用事务等. InnoDB和BDB提供 ...
- PRINT_TABLE 列以行形式显示
在sqlplus,如果列比较多,往往会显示不够清晰,这时如果能把查询语句行转列就明了多了,在网上看到print_table存储过程:里面所设置的日期格式,可根据自己习惯修改 CREATE OR REP ...
- LVM to increase and reduce 10G size for /data
=======================increase10G for/data=============================(system env /dev/MongoData00 ...
- javascript中arguments的应用——不定项传参求和
<script type="text/javascript"> window.onload=function(){ function sum(){ var result ...
- Quartus ModelSim联合仿真中的RAM初始化
Modelsim只支持Hex格式的初始化文件,文件需要放在仿真的根目录下,例如:.\simulation\modelsim:并且在利用Quartus宏生成IP时,选择的初始化文件必须用绝对路径!否则M ...
- 【HDU】6146 Pokémon GO
[题意]一个2*n的网格,再保证步数最少的情况下,求从任意格出发遍历完所有格的方案数,格子八连通.n<=10000,T<=100. [算法]递推,DP [题解]原题链接:蓝桥杯 格子刷油漆 ...
- bzoj 1601 最小生成树
原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1601 最小生成树的比较水的题,我们只需要加一个源点,连向所有的点,边权为每个点建水库的代价 ...
- cygwin与vim配置
参考 http://www.jeepshoe.org/810958442.htm cygwin安装包管理器 通过终端安装apt-cyg之前选要安装以下软件包wget tar gawk bzip2 ap ...