Square words(codevs 3301)

题目描述 Description

定义square words为:

1.长度为偶数。

2.前一半等于后一半。

比如abcabc和aaaa都是square words,但是abcabcab和aaaaa都不是。

现在有一个长度为n的字符串,求至少要删掉多少个字符,使得剩下的字符串是square words。

输入描述 Input Description

第一行包含一个正整数n。

第二行一个长度为n的字符串,仅包含小写字母

输出描述 Output Description

仅包含一个整数,表示最少需要删掉的字符数

样例输入 Sample Input

11

abaccdaabcd

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

【样例说明】

abaccdaabcd

【数据规模】

对于40%的数据,n ≤ 20;

对于100%的数据,n ≤ 500。

/*
  ,枚举断点,求最长公共子序列
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#define M 510
using namespace std;
char s[M],a[M],b[M];
int n,n1,n2,f[M][M],ans;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
      cin>>s[i];
    for(int k=1;k<n;k++)
    {
        memset(f,0,sizeof(f));
        n1=0,n2=0;
        for(int i=1;i<=k;i++)
          a[++n1]=s[i];
        for(int i=k+1;i<=n;i++)
          b[++n2]=s[i];
        for(int i=1;i<=n1;i++)
          for(int j=1;j<=n2;j++)
          {
              if(a[i]==b[j])f[i][j]=max(f[i-1][j-1]+1,f[i]

[j]);
              f[i][j]=max(f[i][j],max(f[i-1][j],f[i][j-1]));
              ans=max(ans,f[i][j]);
          }
    }
    printf("%d",n-ans*2);
    return 0;
}

时间: 2024-11-01 11:24:07

Square words(codevs 3301)的相关文章

UVA 10023 - Square root(手算平方根)

题目:UVA 10023 - Square root(手算平方根) 题目链接 题目大意:求给定的一个数的平方根. 解题思路:用二分但是这个数太大了,就超时了.看题接后发现需要用一种手算平方根的算法. 算法: 先判断这个数是不是偶数位,是的话就第一次取前面的两位数,不是的话第一次就只取前面的一位数来作为被除数.接下来就是两位两位为一节来计算. 用前一次的计算结果乘上20+一个个位数a再乘上这个a,找到最大的a使得这个式子的结果不大于被除数. 被除数减去这个结果然后再在尾巴接上那个大数的接下来两位作

xth的旅行(codevs 1450)

题目描述 Description 毕业了,Xth很高兴,因为他要和他的 rabbit 去双人旅行了.他们来到了水城威尼斯.众所周知(⊙﹏⊙b汗),这里的水路交通很发达,所以 xth 和 rabbit 只好坐船穿梭于各个景点之间.但是要知道,rabbit 是会晕船的,看到她难受,xth 是会心疼的.已知城市中有n个景点,这些景点之间有m条双向水路,在每条水路上航行时rabbit 都会有一个"晕船值".旅行时,xth 会带着 rabbit 尽量选择晕船值小的路线旅行.但是 rabbit 也

二叉树计数(codevs 3112)

题目描述 Description 一个有n个结点的二叉树总共有多少种形态 输入描述 Input Description 读入一个正整数n 输出描述 Output Description 输出一个正整数表示答案 样例输入 Sample Input 6 样例输出 Sample Output 132 数据范围及提示 Data Size & Hint 1<=n<=20 /* 复习一下卡特兰数,以备考试考上模板(虽然可能性不大) 递推式:h[1]=1,h[i]=(4*i-2)*h[i-1]/(n

矿场搭建(codevs 1996)

题目描述 Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援出口.请写一个程序,用来计算至少需要设置几个救援出口,以及不同最少救援出口的设置方案总数. 输入描述 Input Description 输入文件有若干组数据,每组数据的第一行是一个正整数N(N≤500),表示工地的隧道数,接下来的N

刺激(codevs 1958)

题目描述 Description saffah的一个朋友S酷爱滑雪,并且追求刺激(exitement,由于刺激过度导致拼写都缺了个字母),喜欢忽高忽低的感觉.现在S拿到了一张地图,试图制定一个最长路径.然而有的地图过于庞大,不易直接看出,所以S请来了saffah,saffah又请来了你向其帮忙. 地图可抽象为一个M×N的矩阵,规定上北下南,左西右东.矩阵中的元素代表这个点的高度.由于S有特殊情况,出于对S的安全考虑,S只能向东滑,向南滑,或者就地停下.我们假定摩擦力可以忽略,那么S的机械能守恒,

打砖块(codevs 1257)

题目描述 Description 在一个凹槽中放置了n层砖块,最上面的一层有n块砖,第二层有n-1块,--最下面一层仅有一块砖.第i层的砖块从左至右编号为1,2,--i,第i层的第j块砖有一个价值a[i,j](a[i,j]<=50).下面是一个有5层砖块的例子.如果你要敲掉第i层的第j块砖的话,若i=1,你可以直接敲掉它,若i>1,则你必须先敲掉第i-1层的第j和第j+1块砖. 你的任务是从一个有n(n<=50)层的砖块堆中,敲掉(m<=500)块砖,使得被敲掉的这些砖块的价值总和

xth的第 12 枚硬币(codevs 1366)

题目描述 Description 传说 xth 曾经拥有11枚完全相同硬币(你懂得),不过今年呢,rabbit又送了他一 枚硬币.这枚硬币和其他硬币外观相同,只有重量不同,或轻或重.Xth 一不小心, 将这枚特殊的硬币和其他硬币混在了一起.Rabbit 知道后很生气,要他立刻把那枚 硬币找出来,并且还要说出这枚硬币是轻还是重.可怜的 Xth 只有一架普通托盘天 平,并且只能称量三次(每次称量,两边各四枚).现在全部 12枚硬币编号为 A~L,现给出你三次称量的结果,请你帮 xth 找出那枚不一样

能量项链(codevs 1154)

题目描述 Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记.因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量.如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为m*r*n(Mars单

假期(codevs 3622)

题目描述 Description 经过几个月辛勤的工作,FJ决定让奶牛放假.假期可以在1-N天内任意选择一段(需要连续),每一天都有一个享受指数W.但是奶牛的要求非常苛刻,假期不能短于P天,否则奶牛不能得到足够的休息:假期也不能超过Q天,否则奶牛会玩的腻烦.FJ想知道奶牛们能获得的最大享受指数. 输入描述 Input Description 第一行:N,P,Q. 第二行:N个数字,中间用一个空格隔开. 输出描述 Output Description 一个整数,奶牛们能获得的最大享受指数. 样例输