QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#358961#7686. The Phantom Menacewsc2008WA 305ms193204kbC++142.8kb2024-03-20 09:56:082024-03-20 09:56:08

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-03-20 09:56:08]
  • 评测
  • 测评结果:WA
  • 用时:305ms
  • 内存:193204kb
  • [2024-03-20 09:56:08]
  • 提交

answer

#pragma GCC optimize("2,3,Ofast,inline,unroll-loops")
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
#define pii pair<ll,ll>
#define rep(i,a,b) for(ll i=(a);i<=(b);++i)
#define per(i,a,b) for(ll i=(a);i>=(b);--i)
using namespace std;
bool Mbe;
inline ll read(){
	ll x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-f;ch=getchar();}
	while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
	return x*f;
}
inline void write(ll x){
	if(x<0)putchar('-'),x=-x;
	if(x>9)write(x/10);
	putchar(x%10+'0');
}
const ll N=2e6+9;
const ull B=47383,Mod=998244353;
ll T,n,m,hd[N],pw[N],tote,tot,in[N],out[N],cur[N];
vector<ll>hsha[N],hshb[N];
vector<char>a[N],b[N];
map<ll,ll>pt;
ll Ha(ll id,ll l,ll r){
	if(l>r)return 0;
	return (hsha[id][r]-hsha[id][l-1]*pw[r-l+1]%Mod+Mod)%Mod;
}
ll Hb(ll id,ll l,ll r){
	if(l>r)return 0;
	return (hshb[id][r]-hshb[id][l-1]*pw[r-l+1]%Mod+Mod)%Mod;
}
struct Edg{
	ll to,nxt,id,tp;
}es[N];
vector<pii>res;
void adde(ll x,ll y,ll z,ll w){
	out[x]++,in[y]++;
	es[++tote]=(Edg){y,hd[x],z,w};
	hd[x]=tote;
}
void dfs(ll x){
	for(ll&i=cur[x];i;){
		ll y=es[i].to;
		res.push_back(make_pair(es[i].id,es[i].tp));
		i=es[i].nxt;
		dfs(y);
	}
}
char s[N];
void solve(){
	n=read(),m=read();
	pw[0]=1;
	rep(i,1,m)pw[i]=pw[i-1]*B%Mod;
	rep(i,1,n)hsha[i].clear(),hsha[i].resize(m+2);
	rep(i,1,n)hshb[i].clear(),hshb[i].resize(m+2);
	rep(i,1,n){
		scanf("%s",s+1);
		a[i].clear(),a[i].resize(m+2);
		rep(j,1,m){
			a[i][j]=s[j];
			hsha[i][j]=(hsha[i][j-1]*B+a[i][j])%Mod;
		}
	}
	rep(i,1,n){
		scanf("%s",s+1);
		b[i].clear(),b[i].resize(m+2);
		rep(j,1,m){
			b[i][j]=s[j];
			hshb[i][j]=(hshb[i][j-1]*B+b[i][j])%Mod;
		}
	}
	vector<ll>resa,resb;
	rep(i,0,m-1){
		tot=0,tote=0;
		pt.clear();
		rep(j,0,n*2)hd[j]=0,in[j]=out[j]=0;
		rep(j,1,n){
			ll pre=Ha(j,1,i),suf=Ha(j,i+1,m);
			if(pt.find(pre)==pt.end())pt[pre]=++tot;
			if(pt.find(suf)==pt.end())pt[suf]=++tot;
			adde(pt[pre],pt[suf],j,0);
		}
		rep(j,1,n){
			ll pre=Hb(j,1,m-i),suf=Hb(j,m-i+1,m);
			if(pt.find(pre)==pt.end())pt[pre]=++tot;
			if(pt.find(suf)==pt.end())pt[suf]=++tot;
			adde(pt[pre],pt[suf],j,1);
		}
		ll fl=1;
		rep(j,1,tot){
			if(abs(in[j]-out[j])>=1){
				fl=0;
				break;
			}
		}
		if(!fl)continue;
		rep(j,1,tot)cur[j]=hd[j];
		res.clear();
		dfs(1);
		for(pii p:res){
			if(!p.second)resa.push_back(p.first);
			else resb.push_back(p.first);
		}
		for(ll x:resa)write(x),putchar(' ');
		putchar('\n');
		for(ll x:resb)write(x),putchar(' ');
		putchar('\n');
		return ;
	}
	puts("-1");
}
bool Med;
int main(){
	cerr<<fabs(&Med-&Mbe)/1048576.0<<"MB\n";
	T=read();
	while(T--)solve();
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 20ms
memory: 191620kb

input:

2
3 3
abc
ghi
def
bcd
efg
hia
1 3
abc
def

output:

1 3 2 
1 2 3 
-1

result:

ok 2 cases (2 test cases)

Test #2:

score: 0
Accepted
time: 305ms
memory: 192948kb

input:

1000000
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
...

output:

1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
...

result:

ok 1000000 cases (1000000 test cases)

Test #3:

score: -100
Wrong Answer
time: 246ms
memory: 193204kb

input:

500000
1 2
dd
ba
1 2
cd
ba
1 2
bd
ba
1 2
ad
ba
1 2
dc
ba
1 2
cc
ba
1 2
bc
ba
1 2
ac
ba
1 2
db
ba
1 2
cb
ba
1 2
bb
ba
1 2
ab
ba
1 2
da
ba
1 2
ca
ba
1 2
ba
ba
1 2
aa
ba
1 2
dd
aa
1 2
cd
aa
1 2
bd
aa
1 2
ad
aa
1 2
dc
aa
1 2
cc
aa
1 2
bc
aa
1 2
ac
aa
1 2
db
aa
1 2
cb
aa
1 2
bb
aa
1 2
ab
aa
1 2
da
aa
1 2...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 
1 
-1
-1
1 
1 
-1
1 

-1
-1
-1
-1
1 

-1
-1
-1
-1
1 

-1
-1
-1
-1
1 
1 
1 
1 
-1
-1
-1
-1
1 

-1
-1
-1
-1
1 

-1
-1
-1
-1
1 

-1
1 
1 
-1
-1
1 
1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 
1 
-1
-1
-1
-1
-1
1 
1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 
1 
-1
-1
-1
-1
-1
...

result:

wrong answer q is not permutation (test case 17)