刚才那个贴发错了,上面贴的是我本来就错的代码,已紫衫,现在重新问一下。
这是我自己没找出错的代码,求 hack:
#include <bits/stdc++.h>
using namespace std;
const int maxn=3005;
int t,n,x,y;
char a[maxn],b[maxn];
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&x,&y);
scanf("%s",a+1);
scanf("%s",b+1);
int sum=0;
for(int i=1;i<=n;i++)
{
if(a[i]!=b[i])sum++;
}
if(sum&1)
{
printf("-1\n");
continue;
}
long long ans=0;
for(int i=1;i<=n;i++)
{
if(a[i]!=b[i])
{
int pos=i;
for(int j=i+1;j<=n;j++)
{
if(a[j]!=b[j])
{
pos=j;
if(pos!=i+1)
{
break;
}
}
}
if(pos==i+1)
{
long long sum=x;
sum=min(sum,(long long)y*2ll);
ans+=sum;
}
else
{
ans+=(long long)(y);
}
a[i]=b[i];
a[pos]=b[pos];
}
}
printf("%lld\n",ans);
}
return 0;
}