Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
26797 | 岳亦铭 | 【BJ】T2 | C++ | 运行出错 | 0 | 0 MS | 256 KB | 1260 | 2024-02-26 14:30:10 |
#include <bits/stdc++.h> using namespace std; const int maxn=4010; int n,m,k; int a[maxn],b[maxn]; int nxta[maxn][maxn],nxtb[maxn][maxn]; int f[maxn][maxn]; int main() { freopen("subsequence.in","r",stdin); freopen("subsequence.out","w",stdout); ios::sync_with_stdio(false); cin>>n>>m>>k; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=m;i++) cin>>b[i]; for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++) if(!nxta[i][a[j]]) nxta[i][a[j]]=j; for(int i=0;i<=n;i++) for(int j=1;j<=k;j++) if(!nxta[i][j]) nxta[i][j]=n+1; for(int i=0;i<=m;i++) for(int j=i+1;j<=m;j++) if(!nxtb[i][b[j]]) nxtb[i][b[j]]=j; for(int i=0;i<=m;i++) for(int j=1;j<=k;j++) if(!nxtb[i][j]) nxtb[i][j]=m+1; for(int i=1;i<=k;i++) nxta[n+1][i]=n+1,nxtb[m+1][i]=m+1; memset(f,0x3f,sizeof(f)); f[0][0]=0; int cnt=0; for(register int i=0;i<=n+1;i++) { for(register int j=0;j<=m+1;j++) { if(a[i]!=b[j]||f[i][j]>1e6) continue; for(register int nxt=1;nxt<=k;nxt++) { int posa=nxta[i][nxt],posb=nxtb[j][nxt]; f[posa][posb]=min(f[posa][posb],f[i][j]+1); } if(f[n+1][m+1]==1) { cout<<1<<endl; return 0; } } } if(f[n+1][m+1]<=1e6) cout<<f[n+1][m+1]<<endl; else cout<<max(n+1,m+1)<<endl; return 0; }