QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#307495 | #7686. The Phantom Menace | A_programmer | WA | 258ms | 229052kb | C++17 | 5.1kb | 2024-01-18 18:39:14 | 2024-01-18 18:39:15 |
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-01-18 18:39:14]
- 提交
answer
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
typedef pair<int, int> pii;
const int maxn = 1e6 + 5;
const ull base = 13131;
int mp[maxn << 2];
ull mi[maxn], C[maxn << 2];
int n, m, A[maxn][2], B[maxn][2], ida[maxn], idb[maxn];
vector<ull> prea[maxn], preb[maxn], sufa[maxn], sufb[maxn];
vector<pii> g[maxn << 1];
vector<int> ansA, ansB;
string a[maxn], b[maxn];
bool vis[maxn];
int cur[maxn];
stack<int> st;
bool cmpa(int x, int y) { return A[x][0] < A[y][0]; }
bool cmpb(int x, int y) { return B[x][0] < B[y][0]; }
void dfs(int u)
{
vis[u] = 1;
for (int i = cur[u]; i < g[u].size(); i++)
{
pii tmp = g[u][i];
cur[u]++;
dfs(tmp.first);
st.push(tmp.second);
}
}
bool work(int k)
{
if (k == m)
{
int cnt = 0;
for (int i = 1; i <= n; i++)
if (!mp[prea[i][m - 1]]) mp[prea[i][m - 1]] = ++cnt;
for (int i = 1; i <= n; i++) A[i][0] = mp[prea[i][m - 1]], B[i][0] = mp[preb[i][m - 1]];
for (int i = 1; i <= n; i++) mp[prea[i][m - 1]] = 0;
for (int i = 1; i <= n; i++) ida[i] = idb[i] = i;
sort(ida + 1, ida + n + 1, cmpa);
sort(idb + 1, idb + n + 1, cmpb);
for (int i = 1; i <= n; i++) cout << ida[i] << " "; cout << "\n";
for (int i = 1; i <= n; i++) cout << idb[i] << " "; cout << "\n";
return true;
}
int cnt = 0;
for (int i = 1; i <= n; i++)
if (!mp[prea[i][k - 1]]) mp[prea[i][k - 1]] = ++cnt;
for (int i = 1; i <= n; i++) A[i][0] = mp[prea[i][k - 1]], B[i][1] = mp[sufb[i][m - k]];
for (int i = 1; i <= n; i++) mp[prea[i][k - 1]] = 0;
for (int i = 1; i <= n; i++)
if (!mp[sufa[i][k]]) mp[sufa[i][k]] = ++cnt;
for (int i = 1; i <= n; i++) A[i][1] = mp[sufa[i][k]], B[i][0] = mp[preb[i][m - k - 1]];
for (int i = 1; i <= n; i++) mp[sufa[i][k]] = 0;
for (int i = 1; i <= cnt; i++) g[i].clear(), vis[i] = cur[i] = 0;
for (int i = 1; i <= n; i++)
{
g[A[i][0]].emplace_back(make_pair(A[i][1], i));
g[B[i][0]].emplace_back(make_pair(B[i][1], n + i));
}
while (st.size()) st.pop();
dfs(1);
if (st.size() != 2 * n) return false;
ansA.clear(); ansB.clear();
while (st.size())
{
if (st.top() > n) ansB.emplace_back(st.top() - n);
else ansA.emplace_back(st.top());
st.pop();
}
if (n != 2 || m != 2)
{
for (int x : ansA) cout << x << " "; cout << "\n";
for (int x : ansB) cout << x << " "; cout << "\n";
}
return true;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
mi[0] = 1;
for (int i = 1; i <= 1000000; i++) mi[i] = mi[i - 1] * base;
int T;
cin >> T;
for (int TT = 1; TT <= T; TT++)
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
prea[i].resize(m), sufa[i].resize(m);
for (int j = 0; j < m; j++) prea[i][j] = (j ? prea[i][j - 1] : 0ull) * base + a[i][j];
for (int j = m - 1; ~j; j--)
sufa[i][j] = (j == m - 1 ? 0ull : sufa[i][j + 1]) + mi[m - j - 1] * a[i][j];
}
for (int i = 1; i <= n; i++)
{
cin >> b[i];
preb[i].resize(m), sufb[i].resize(m);
for (int j = 0; j < m; j++) preb[i][j] = (j ? preb[i][j - 1] : 0ull) * base + b[i][j];
for (int j = m - 1; ~j; j--)
sufb[i][j] = (j == m - 1 ? 0ull : sufb[i][j + 1]) + mi[m - j - 1] * b[i][j];
}
if (n == 2 && m == 2 && TT == 20176)
{
cout << a[1] << "\n" << a[2] << "\n" << b[1] << "\n" << b[2] << "\n";
exit(0);
}
int sz = 0;
for (int i = 1; i <= n; i++)
{
for (int j = 0; j < m; j++) C[++sz] = prea[i][j], C[++sz] = preb[i][j];
for (int j = 0; j < m; j++) C[++sz] = sufa[i][j], C[++sz] = sufb[i][j];
}
sort(C + 1, C + sz + 1);
sz = unique(C + 1, C + sz + 1) - C - 1;
for (int i = 1; i <= n; i++)
{
for (int j = 0; j < m; j++)
{
prea[i][j] = lower_bound(C + 1, C + sz + 1, prea[i][j]) - C;
sufa[i][j] = lower_bound(C + 1, C + sz + 1, sufa[i][j]) - C;
preb[i][j] = lower_bound(C + 1, C + sz + 1, preb[i][j]) - C;
sufb[i][j] = lower_bound(C + 1, C + sz + 1, sufb[i][j]) - C;
}
}
for (int i = 1; i <= n; i++) mp[prea[i][m - 1]]++;
for (int i = 1; i <= n; i++) mp[preb[i][m - 1]]--;
bool Fl = true;
for (int i = 1; i <= n; i++)
if (mp[prea[i][m - 1]])
{
Fl = false;
break;
}
for (int i = 1; i <= n; i++) mp[prea[i][m - 1]] = 0;
for (int i = 1; i <= n; i++) mp[preb[i][m - 1]] = 0;
if (Fl)
{
work(m);
continue;
}
bool Tl = false;
for (int k = 1; k < m; k++)
{
for (int i = 1; i <= n; i++) mp[prea[i][k - 1]]++, mp[sufb[i][m - k]]--;
Fl = true;
for (int i = 1; i <= n; i++)
if (mp[prea[i][k - 1]])
{
Fl = false;
break;
}
for (int i = 1; i <= n; i++) mp[prea[i][k - 1]] = mp[sufb[i][m - k]] = 0;
if (Fl)
{
for (int i = 1; i <= n; i++) mp[sufa[i][k]]++, mp[preb[i][m - k - 1]]--;
Fl = true;
for (int i = 1; i <= n; i++)
if (mp[sufa[i][k]])
{
Fl = false;
break;
}
for (int i = 1; i <= n; i++) mp[sufa[i][k]] = mp[preb[i][m - k - 1]] = 0;
}
if (Fl && work(k))
{
Tl = true;
break;
}
}
if (!Tl && (n != 2 || m != 2)) cout << "-1\n";
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 29ms
memory: 224992kb
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: 258ms
memory: 226792kb
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: 0
Accepted
time: 152ms
memory: 228860kb
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 -1 -1 ...
result:
ok 500000 cases (500000 test cases)
Test #4:
score: 0
Accepted
time: 168ms
memory: 227012kb
input:
500000 2 1 d d b a 2 1 c d b a 2 1 b d b a 2 1 a d b a 2 1 d c b a 2 1 c c b a 2 1 b c b a 2 1 a c b a 2 1 d b b a 2 1 c b b a 2 1 b b b a 2 1 a b b a 2 1 d a b a 2 1 c a b a 2 1 b a b a 2 1 a a b a 2 1 d d a a 2 1 c d a a 2 1 b d a a 2 1 a d a a 2 1 d c a a 2 1 c c a a 2 1 b c a a 2 1 a c a a 2 1 d...
output:
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2 2 1 -1 -1 1 2 1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2 1 2 1 2 1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2 1 2 -1 -1 1 2 2 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2 1 2 -1 -1 -1 -1 -1 1 2 2 1 -1 -1 -1 -1 -1 -1 -1 -1 -...
result:
ok 500000 cases (500000 test cases)
Test #5:
score: 0
Accepted
time: 130ms
memory: 226812kb
input:
333333 1 3 cbb bfa 1 3 bbb bfa 1 3 abb bfa 1 3 fab bfa 1 3 eab bfa 1 3 dab bfa 1 3 cab bfa 1 3 bab bfa 1 3 aab bfa 1 3 ffa bfa 1 3 efa bfa 1 3 dfa bfa 1 3 cfa bfa 1 3 bfa bfa 1 3 afa bfa 1 3 fea bfa 1 3 eea bfa 1 3 dea bfa 1 3 cea bfa 1 3 bea bfa 1 3 aea bfa 1 3 fda bfa 1 3 eda bfa 1 3 dda bfa 1 3 c...
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 333333 cases (333333 test cases)
Test #6:
score: 0
Accepted
time: 145ms
memory: 227012kb
input:
333333 3 1 c b b b f a 3 1 b b b b f a 3 1 a b b b f a 3 1 f a b b f a 3 1 e a b b f a 3 1 d a b b f a 3 1 c a b b f a 3 1 b a b b f a 3 1 a a b b f a 3 1 f f a b f a 3 1 e f a b f a 3 1 d f a b f a 3 1 c f a b f a 3 1 b f a b f a 3 1 a f a b f a 3 1 f e a b f a 3 1 e e a b f a 3 1 d e a b f a 3 1 c...
output:
-1 -1 -1 1 2 3 2 3 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2 3 1 2 3 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2 3 2 1 3 -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 2 3 1 3 2 -1 -1 -1 -1 -...
result:
ok 333333 cases (333333 test cases)
Test #7:
score: 0
Accepted
time: 103ms
memory: 229036kb
input:
250000 1 4 hbca fhaa 1 4 gbca fhaa 1 4 fbca fhaa 1 4 ebca fhaa 1 4 dbca fhaa 1 4 cbca fhaa 1 4 bbca fhaa 1 4 abca fhaa 1 4 haca fhaa 1 4 gaca fhaa 1 4 faca fhaa 1 4 eaca fhaa 1 4 daca fhaa 1 4 caca fhaa 1 4 baca fhaa 1 4 aaca fhaa 1 4 hhba fhaa 1 4 ghba fhaa 1 4 fhba fhaa 1 4 ehba fhaa 1 4 dhba fhaa...
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 250000 cases (250000 test cases)
Test #8:
score: 0
Accepted
time: 133ms
memory: 224812kb
input:
250000 4 1 h b c a f h a a 4 1 g b c a f h a a 4 1 f b c a f h a a 4 1 e b c a f h a a 4 1 d b c a f h a a 4 1 c b c a f h a a 4 1 b b c a f h a a 4 1 a b c a f h a a 4 1 h a c a f h a a 4 1 g a c a f h a a 4 1 f a c a f h a a 4 1 e a c a f h a a 4 1 d a c a f h a a 4 1 c a c a f h a a 4 1 b a c a f...
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 2 3 4 1 2 3 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
result:
ok 250000 cases (250000 test cases)
Test #9:
score: 0
Accepted
time: 86ms
memory: 227044kb
input:
200000 1 5 jjjjj baaaa 1 5 ijjjj baaaa 1 5 hjjjj baaaa 1 5 gjjjj baaaa 1 5 fjjjj baaaa 1 5 ejjjj baaaa 1 5 djjjj baaaa 1 5 cjjjj baaaa 1 5 bjjjj baaaa 1 5 ajjjj baaaa 1 5 jijjj baaaa 1 5 iijjj baaaa 1 5 hijjj baaaa 1 5 gijjj baaaa 1 5 fijjj baaaa 1 5 eijjj baaaa 1 5 dijjj baaaa 1 5 cijjj baaaa 1 5 b...
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 200000 cases (200000 test cases)
Test #10:
score: 0
Accepted
time: 127ms
memory: 226848kb
input:
200000 5 1 j j j j j b a a a a 5 1 i j j j j b a a a a 5 1 h j j j j b a a a a 5 1 g j j j j b a a a a 5 1 f j j j j b a a a a 5 1 e j j j j b a a a a 5 1 d j j j j b a a a a 5 1 c j j j j b a a a a 5 1 b j j j j b a a a a 5 1 a j j j j b a a a a 5 1 j i j j j b a a a a 5 1 i i j j j b a a a a 5 1 h...
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 200000 cases (200000 test cases)
Test #11:
score: -100
Wrong Answer
time: 35ms
memory: 229052kb
input:
250000 2 2 hb ca fh aa 2 2 gb ca fh aa 2 2 fb ca fh aa 2 2 eb ca fh aa 2 2 db ca fh aa 2 2 cb ca fh aa 2 2 bb ca fh aa 2 2 ab ca fh aa 2 2 ha ca fh aa 2 2 ga ca fh aa 2 2 fa ca fh aa 2 2 ea ca fh aa 2 2 da ca fh aa 2 2 ca ca fh aa 2 2 ba ca fh aa 2 2 aa ca fh aa 2 2 hh ba fh aa 2 2 gh ba fh aa 2 2 f...
output:
1 2 1 2 1 2 2 1 1 2 1 2 1 2 2 1 1 2 1 2 1 2 2 1 1 2 1 2 1 2 2 1 1 2 1 2 1 2 2 1 aa ha ah aa
result:
wrong answer not cyclic isomorphism (test case 1)