[BZOJ 1789] Necklace
Link:
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; }