社区讨论
非题解做法求hack
CF1701E Text Editor参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhjkywdb
- 此快照首次捕获于
- 2025/11/04 04:16 4 个月前
- 此快照最后确认于
- 2025/11/04 04:16 4 个月前
非题解做法,WA on #10,求hack
CPP#include<bits/stdc++.h>
#define M 5010
#define INF 0x3f3f3f3f
using namespace std;
int t,n,m,s,l,r,a[M],b[M],ka,kb;string x,y;
int pd()
{
int i=1,j=1;ka=kb=n-m+1;s=l=r=0;
while(i<=n&&j<=m)
{
if(x[i]==y[j])++i,++j;
else
{
b[--ka]=i;
++i;
}
}
if(j!=m+1)return 1;
while(i<=n)
{
b[--ka]=i;
++i;
}
// l=a[ka];
i=n,j=m;
while(i&&j)
{
if(x[i]==y[j])--i,--j;
else
{
a[--kb]=i;
--i;
}
}
while(i)
{
a[--kb]=i;
--i;
}
// r=b[kb];
// s=min(n-m+l+1,n-r+1);
// cout<<s<<"!\n";
return 0;
}
int main()
{
std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>t;
while(t--)
{
cin>>n>>m>>x>>y;
x=" "+x,y=" "+y;
if(n<m||pd())
{
cout<<"-1\n";
continue;
}
else if(n==m)
{
cout<<"0\n";
continue;
}
s=min(a[n-m]+1+n-m,n-b[n-m]+1);
for(register int i=1;i<n-m;i++)
s=min(s,a[i]+1+i+n-b[n-m-i]+1);
cout<<s<<'\n';
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...