HDU 5903 (DP)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 1e3+;
int dp[maxn][maxn];
char s1[maxn];
char p[maxn];
int main()
{
int T;cin>>T;
while(T--)
{
int n,m;
scanf("%d %d",&n,&m);
scanf("%s",s1); //dp[i][j],i表示当前位置,j表示当前花费是否合法。
memset(dp,,sizeof(dp));
dp[n/][] = ;
for(int i=n/;i>=;i--)
{
if(s1[i]==s1[i+n/])
{
for(int j=m;j>=;j--)
{
if(dp[i+][j]) dp[i][j] = ; //不改
}
for(int j=m;j>=;j--)
{
if(dp[i+][j-]) dp[i][j] = ; //改两次
}
}
else
{
for(int j=m;j>=;j--)
{
if(dp[i+][j-]) dp[i][j] = ; //改一次
}
for(int j=m;j>=;j--)
{
if(dp[i+][j-]) dp[i][j] = ; //改两次
}
}
}
if(!dp[][m])
{
printf("Impossible\n");
continue;
}
for(int i=;i<n/;i++)
{
for(int j=;j<;j++)
{
int count1 = ;
char now = j+'a';
if(now!=s1[i]) count1++;
if(now!=s1[i+n/]) count1++;
if(dp[i+][m-count1])
{
p[i] = j+'a';
p[i+n/] = j+'a';
m = m-count1;
break;
}
}
}
p[n] = '\0';
printf("%s\n",p);
}
return ;
}
HDU 5903 (DP)的更多相关文章
- hdu 3016 dp+线段树
Man Down Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- HDU 5928 DP 凸包graham
给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...
- HDU 5903 - Square Distance [ DP ] ( BestCoder Round #87 1002 )
题意: 给一个字符串t ,求与这个序列刚好有m个位置字符不同的由两个相同的串拼接起来的字符串 s, 要求字典序最小的答案 分析: 把字符串折半,分成0 - n/2-1 和 n/2 - n-1 d ...
- HDU 5903 Square Distance (贪心+DP)
题意:一个字符串被称为square当且仅当它可以由两个相同的串连接而成. 例如, "abab", "aa"是square, 而"aaa", ...
- hdu 5903 Square Distance(dp)
Problem Description A string is called a square string if it can be obtained by concatenating two co ...
- HDU 1069 dp最长递增子序列
B - Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- HDU 1160 DP最长子序列
G - FatMouse's Speed Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- hdu 4826(dp + 记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4826 思路:dp[x][y][d]表示从方向到达点(x,y)所能得到的最大值,然后就是记忆化了. #i ...
- HDU 2861 (DP+打表)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2861 题目大意:n个位置,m个人,分成k段,统计分法.S(n)=∑nk=0CknFibonacci(k ...
随机推荐
- 3.1 Data Member的绑定
文章开始提出了一段示例代码,并讨论了返回哪个x的问题.然后 a) 给出了我们普遍认为正确的回答,并肯定了这个想法: b) 提醒大家,这在以前的编译器实现中,并非正确. 在早期的实现中,首 ...
- abstract和interface
1.abstract 的应用 abstract class ShapesClass { public abstract int Area(); } class Square : ShapesClass ...
- html5学习(一) video字段
html5对视频的支持: html5通过<video></video>字段实现web页面上视频的播放功能. 目前各大浏览器对<video>字段的支持: 当前,vid ...
- nmon命令用法
用途 以交互方式显示本地系统统计信息并以记录方式记录系统统计信息. 语法 交互方式: nmon [ -h ] nmon [ -s < seconds > ] [ -c < count ...
- varnish缓存安装使用
varnish PDF http://files.cnblogs.com/jimingsong/varnish.pdf 目前介绍CentOS6.4-64位系统 yum安装varnish: 配置varn ...
- User.java 实体类 带 数据库字段模板
package com.tgb.web.controller.entity; import javax.persistence.Column; import javax.persistence.Ent ...
- 解决scrollview不滚动
scrollView不滚动的时候 试试这个,有时候药到病除:
- ClickOnce发布注意的一些细节
细节1.应用程序启动前检查更新: 步骤:主工程-右键属性-发布(页面)-按“更新”按钮-勾选“应用程序应该检查更新(T)”-选择“应用程序启动前(F)”,如下图: 细节二:ClickOnce发布时&q ...
- web服务器小记
服务器分web服务器,应用程序服务器以及HTTP服务器,此处只解释web服务器,详情: http://www.cnblogs.com/zhaoyl/archive/2012/10/10/2718575 ...
- shell 入门教程
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. 一 惯例,第一个shell #!/bin/bash echo "Hello ...