zoukankan      html  css  js  c++  java
  • 1789: [Ahoi2008]Necklace Y型项链

    1789: [Ahoi2008]Necklace Y型项链

    Time Limit: 1 Sec  Memory Limit: 64 MB
    Submit: 421  Solved: 258
    [Submit][Status][Discuss]

    Description

    欢乐岛上众多新奇的游乐项目让小可可他们玩的非常开心。现在他们正在玩比赛串项链的游戏,谁串的最快就能得到优厚的奖品。这可不是普通的项链,而是一种Y型项链,项链的最中间有一颗大珍珠作为结合点,从大珍珠上连出来3条由各种宝石串起来的链子。比赛的规则是这样的:每次可以从三条链子中某一条的一端取下来一个宝石,或者安上去一个宝石,称为一次操作,经过若干次操作,最终使得三条链子完全相同。想要赢得比赛,那么只能使用尽量少的操作次数。假设每种宝石都有无数多个以供使用,且链子足够长。你能帮助小可可赢得比赛吗? 注:由于对Y型项链的宝石数没有特殊的要求,所以即使你把所有宝石都取下来,也是一个可以接受的方案(三根没有串宝石的绳子也是完全一样的).

    Input

    一共有3行,表示Y型项链的三条链子,每行开始有一个数字N,表示初始时这条链子上串有N个宝石(N<=50),随后是一个空格,然后是N个'A'和'Z'之间的字符,表示这个链子上的宝石,每个字母表示一种不同的宝石,这个字符串最左边的字符表示的是离大珍珠最近的那个宝石,而最右边的表示的是在链子末端的宝石。

    Output

    只有一个整数,表示所需要的最少的操作次数.

    Sample Input

    3 CAT
    3 TAC
    5 CATCH

    Sample Output

    8

    HINT

    提示:100%的数据中,N<=50.
    50%的数据中,N<=20.

    Source

    Day2

    题解:。。。实际上别老想着DP、二分、哈希啥的高端算法,事实证明暴力一样也能0msA掉题目——直接上来枚举前缀串,然后算出变化距离,然后打擂台弄出最小的即可

     1 /**************************************************************
     2     Problem: 1789
     3     User: HansBug
     4     Language: Pascal
     5     Result: Accepted
     6     Time:0 ms
     7     Memory:352 kb
     8 ****************************************************************/
     9  
    10 var
    11    i,j,k,l,m,n,ans:longint;
    12    a,b,c,s:ansistring;ch:char;
    13 function min(x,y:longint):longint;
    14          begin
    15               if x<y then min:=x else min:=y;
    16          end;
    17 function cal(x,y:ansistring):longint;
    18          var i:longint;
    19          begin
    20               for i:=1 to min(length(x),length(y)) do
    21                   if x[i]<>y[i] then break;
    22               if x[i]<>y[i] then dec(i);
    23               exit(length(x)-i+length(y)-i);
    24          end;
    25 begin
    26      readln(i,ch,a);
    27      readln(i,ch,b);
    28      readln(i,ch,c);
    29      ans:=length(a)+length(b)+length(c);
    30      s:='';
    31      for i:=1 to length(a) do
    32          begin
    33               s:=s+a[i];
    34               ans:=min(ans,cal(s,a)+cal(s,b)+cal(s,c));
    35          end;
    36      s:='';
    37      for i:=1 to length(b) do
    38          begin
    39               s:=s+b[i];
    40               ans:=min(ans,cal(s,a)+cal(s,b)+cal(s,c));
    41          end;
    42      s:='';
    43      for i:=1 to length(c) do
    44          begin
    45               s:=s+c[i];
    46               ans:=min(ans,cal(s,a)+cal(s,b)+cal(s,c));
    47          end;
    48      writeln(ans);
    49      readln;
    50 end.
  • 相关阅读:
    HUST 1372 marshmallow
    HUST 1371 Emergency relief
    CodeForces 629D Babaei and Birthday Cake
    CodeForces 629C Famil Door and Brackets
    ZOJ 3872 Beauty of Array
    ZOJ 3870 Team Formation
    HDU 5631 Rikka with Graph
    HDU 5630 Rikka with Chess
    CodeForces 626D Jerry's Protest
    【POJ 1964】 City Game
  • 原文地址:https://www.cnblogs.com/HansBug/p/4470677.html
Copyright © 2011-2022 走看看