社区讨论
求大佬给组hack数据
CF1200E Compress Words参与者 2已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @lo3dkt9j
- 此快照首次捕获于
- 2023/10/24 04:53 2 年前
- 此快照最后确认于
- 2023/10/24 04:53 2 年前
RT,改了半天也没发现哪有漏洞,cf上交显示第六组wa了
CPP#include<bits/stdc++.h>
#define int long long
#define inf 1e18
#define inc 0xcfcfcfcf
#define N 100007
#define M 500007
#define mod 1000000007
//#pragma GCC optimize(2)
//#pragma GCC optimize(3)
using namespace std;
int T=1,n;
int fail[N<<2];
string a[N];
int Get_fail(string p)
{
//memset(fail,0,sizeof(fail));
int lp=p.size();
int j=0;
for(int i=1;i<lp;i++)
{
j=fail[i];
while(j&&p[i]!=p[j])
j=fail[j];
if(p[i]==p[j])
fail[i+1]=j+1;
else
fail[i+1]=0;
}
return fail[lp];
}
bool Solve()
{
//freopen("test.in","r",stdin);
scanf("%lld",&n);
for(int i=1;i<=n;++i)
cin>>a[i];
string ans=a[1];
for(int i=2;i<=n;++i)
{
string x,y,z;
int len1=ans.size(),len2=a[i].size();
if(len1>=len2)
{
for(int j=len1-len2;j<len1;++j)
x+=ans[j];
y=a[i];
z=y+"@"+x;
int now=Get_fail(z);
for(int j=now;j<len2;++j)
ans+=a[i][j];
}
else
{
x=ans;
for(int j=0;j<len2-len1;++j)
y+=a[i][j];
z=y+"@"+x;
int now=Get_fail(z);
for(int j=now;j<len2;++j)
ans+=a[i][j];
}
}
cout<<ans<<endl;
return true;
}
signed main()
{
//scanf("%lld",&T);
while(T--)
if(!Solve())
printf("-1\n");
return 0;
}
/*
*/
回复
共 5 条回复,欢迎继续交流。
正在加载回复...