题解 AT4514 【[AGC030E] Less than 3】
Solution
考虑在
假设我们已经确定了
这个下界也是能达到的,因为要求相邻线之间的距离不超过
由于本质不同的安排对应线段的方案只有
Code
int n,tot1,tot2,ans = INF;
int a[MAXN],b[MAXN];
char s[MAXN],t[MAXN];
int main(){
scanf("%d%s%s",&n,s + 1,t + 1);
for(int i = 1;i < n;i++){
if(s[i] != s[i + 1]) a[++tot1] = i;
}
for(int i = 1;i < n;i++){
if(t[i] != t[i + 1]) b[++tot2] = i;
}
for(int i = -tot1 - 1;i <= tot2 + 1;i++){
if((i & 1) ^ (s[1] == t[1])){
int sum = 0;
for(int j = min(1,1 - i);j <= max(tot1,tot2 - i);j++)
sum += abs((j < 0 ? 0 : (j <= tot1 ? a[j] : n)) - (i + j < 0 ? 0 : (i + j <= tot2 ? b[i + j] : n)));
ans = min(ans,sum);
}
}
printf("%d\n",ans);
return 0;
}