[BZOJ 1789] Necklace

Link:

BZOJ 1789 传送门

Solution:

感觉$n\le 50$可以随便乱搞啊……

这里我是先找到3条链的失配位置,再找到这之后其中2条链最远的失配位置,统计即可

Code:

#include <bits/stdc++.h>

using namespace std;
int l[3],pos,mx,mn;
char s[3][55];

int cal(int x,int y)
{
    int cur=pos+1;
    while(cur<=l[x] && cur<=l[y] && s[x][cur]==s[y][cur])
        cur++;
    return cur-pos-1;
}

int main()
{
    for(int i=0;i<3;i++)
        scanf("%d%s",&l[i],s[i]+1);
    mn=min(l[0],min(l[1],l[2]));
    for(int i=1;i<=mn;i++)
        if(s[0][i]!=s[1][i] || s[0][i]!=s[2][i] || s[1][i]!=s[2][i]) break;
        else pos=i;
    mx=max(cal(0,1),max(cal(0,2),cal(1,2)));
    printf("%d",l[0]+l[1]+l[2]-3*pos-mx);
    return 0;
}

 

posted @ 2018-06-30 21:56  NewErA  阅读(184)  评论(0编辑  收藏  举报