QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#527108 | #7686. The Phantom Menace | _HKSR_ | WA | 0ms | 11452kb | C++23 | 4.2kb | 2024-08-22 10:16:13 | 2024-08-22 10:16:14 |
Judging History
你现在查看的是最新测评结果
- [2024-10-08 14:11:03]
- hack成功,自动添加数据
- (/hack/941)
- [2024-10-08 10:05:28]
- hack成功,自动添加数据
- (/hack/940)
- [2024-10-07 19:51:15]
- hack成功,自动添加数据
- (/hack/938)
- [2024-10-07 19:28:01]
- hack成功,自动添加数据
- (/hack/937)
- [2024-10-07 17:16:32]
- hack成功,自动添加数据
- (/hack/936)
- [2024-10-07 16:53:09]
- hack成功,自动添加数据
- (/hack/935)
- [2024-10-07 16:22:17]
- hack成功,自动添加数据
- (/hack/934)
- [2024-08-22 10:16:13]
- 提交
answer
//#include<bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <math.h>
#include <algorithm>
#include <istream>
#include <string>
#include <queue>
#include <deque>
#include <random>
#include <stack>
#include <set>
#include <string.h>
#include <map>
#include <unordered_map>
#include <sstream>
#include <bitset>
#include <fstream>
#include <climits>
#include <time.h>
#include <cassert>
using namespace std;
#define int long long
#define ll long long
#define double long double
#define endl "\n"
#define pii pair<int,int>
#define p1(x) (x).first
#define p2(x) (x).second
#define i128 __int128_t
#define lc(x) (x<<1)
#define rc(x) (x<<1|1)
//#pragma GCC target("bitset")
//#pragma GCC optimize("Ofast,unroll-loops,inline")
const int N=1e3+10;
string a[N],b[N];
#define ull unsigned long long
int n,m;
vector<ull>ahs_pre[N],bhs_pre[N];
vector<ull>ahs_suf[N],bhs_suf[N];
const ull BS=131;
ull pw[1000300];
vector<pii>g[2*N];
inline bool prt(vector<int>A){
if(A.size()!=2*n)return 0;
int w=A[0]>n;
for(int i=w;i<2*n;i+=2)
cout<<A[i]<<" ";
cout<<endl;
for(int i=!w;i<2*n;i+=2)
cout<<A[i]-n<<" ";
cout<<endl;
return 1;
}
vector<int>A;
inline void dfs(int u){
while(!g[u].empty()){
int v=p1(g[u].back()),id=p2(g[u].back());
g[u].pop_back();
dfs(v);
A.push_back(id);
}
}
int ic[2*N],oc[2*N];
signed main(){
ios::sync_with_stdio(0);
// freopen("/Users/liuyile/Downloads/shuffle/shuffle5.in","r",stdin);
// freopen("/Users/liuyile/Downloads/binary/binary.out","w",stdout);
int t;
cin>>t;
pw[0]=1;
for(int i=1;i<=1e6;i++)
pw[i]=pw[i-1]*BS;
int pt=t,c=0;
while(t--){c++;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
ahs_pre[i].resize(m+1);
ahs_suf[i].resize(m+1);
ahs_pre[i][0]=0;
for(int j=0;j<m;j++)
ahs_pre[i][j+1]=ahs_pre[i][j]+pw[j]*a[i][j];
ahs_suf[i][m]=0;
for(int j=m-1;j>=0;j--)
ahs_suf[i][j]=ahs_suf[i][j+1]*BS+a[i][j];
}
for(int i=1;i<=n;i++){
cin>>b[i];
bhs_pre[i].resize(m+1);
bhs_suf[i].resize(m+1);
bhs_pre[i][0]=0;
for(int j=0;j<m;j++)
bhs_pre[i][j+1]=bhs_pre[i][j]+pw[j]*b[i][j];
bhs_suf[i][m]=0;
for(int j=m-1;j>=0;j--)
bhs_suf[i][j]=bhs_suf[i][j+1]*BS+b[i][j];
}
// if(pt==250000&&n==2&&m==2){
// if(c==20176){
// cout<<n<<" "<<m<<endl;
// for(int i=1;i<=n;i++)
// cout<<a[i]<<endl;
// for(int j=1;j<=n;j++)
// cout<<b[j]<<endl;
//
// }
//
// continue;
// }
map<ull,int>mp;
int cnt=0;
bool ok=0;
for(int lim=0;lim<m;lim++){
mp.clear();
cnt=0;
for(int i=1;i<=n;i++){
int l=ahs_pre[i][lim],r=ahs_suf[i][lim];
if(m-lim==lim)r=r*BS+'*';
if(!mp.count(l))mp[l]=++cnt;
if(!mp.count(r))mp[r]=++cnt;
g[mp[l]].push_back({mp[r],i});
oc[mp[l]]++,ic[mp[r]]++;
}
for(int i=1;i<=n;i++){
int l=bhs_pre[i][m-lim],r=bhs_suf[i][m-lim];
if(m-lim==lim)l=l*BS+'*';
if(!mp.count(l))mp[l]=++cnt;
if(!mp.count(r))mp[r]=++cnt;
g[mp[l]].push_back({mp[r],i+n});
oc[mp[l]]++,ic[mp[r]]++;
}
A.clear();
dfs(1);
reverse(A.begin(),A.end());
for(int i=1;i<=cnt;i++)
g[i].clear();
bool op=1;
for(int i=1;i<=cnt;i++)
op&=ic[i]==oc[i];
if(op&&prt(A)){
ok=1;
break;
}
}
if(!ok)cout<<-1<<endl;
}
fflush(stdout);
cout.flush();
return 0;
}
/*
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 11452kb
input:
2 3 3 abc ghi def bcd efg hia 1 3 abc def
output:
-1 -1
result:
wrong answer Jury has the answer but participant has not (test case 1)