QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#275933 | #7882. Linguistics Puzzle | SGColin# | WA | 7ms | 3860kb | C++20 | 2.1kb | 2023-12-05 12:20:50 | 2023-12-05 12:20:50 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef tuple<int, int, int> tiii;
#define eb emplace_back
#define all(s) (s).begin(), (s).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
int n;
vector<char> sc[60];
bool use[256], vis[3007];
char ans[60];
int tr(char c) {return islower(c) ? c - 'a' : c - 'A' + 26;}
bool check() {
rep(i, 0, n - 1) rep(j, 0, n - 1) {
int w = i * j;
if (w < n) if (!vis[tr(ans[w])]) return false;
else if (!vis[tr(ans[w / n]) * 53 + tr(ans[w % n])]) return false;
}
return true;
}
bool dfs(int pos) {
if (pos == n) return check();
for (auto x : sc[pos])
if (!use[x]) {
use[x] = true;
ans[pos] = x;
if (dfs(pos + 1)) return true;
use[x] = false;
}
return false;
}
inline void work() {
cin >> n;
memset(vis, 0, sizeof(vis));
memset(use, 0, sizeof(use));
vector<int> cnt1(n, 0), cnt2(n, 0), cntb(n, 0);
rep(i, 0, n - 1) rep(j, 0, n - 1) {
int w = i * j;
++cnt2[w % n];
if (w >= n) {
++cnt1[w / n];
if (w / n == w % n) ++cntb[w / n];
}
}
map<tiii, vector<int>> f;
rep(i, 0, n - 1) f[{cnt1[i], cnt2[i], cntb[i]}].push_back(i);
map<char, int> c1, c2, cb;
set<char> ch;
rep(i, 1, n * n) {
string s; cin >> s;
int l = s.length();
if (l == 1) {
++c2[s[0]]; ch.insert(s[0]);
vis[tr(s[0])] = true;
} else {
++c1[s[0]]; ch.insert(s[0]);
++c2[s[1]]; ch.insert(s[1]);
vis[tr(s[0]) * 53 + tr(s[1])] = true;
if (s[0] == s[1]) ++cb[s[0]];
}
}
rep(i, 0, n - 1) sc[i].clear();
for (auto x : ch) {
tiii c = make_tuple(c1[x], c2[x], cb[x]);
for (auto p : f[c]) sc[p].push_back(x);
}
dfs(0);
rep(i, 0, n - 1) putchar(ans[i]); puts("");
}
int main() {
int t; cin >> t; while (t--) work();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3548kb
input:
2 3 a b a b b b b c cc 4 d d d d d c b a d b cd cb d a cb bc
output:
bca dcba
result:
ok OK
Test #2:
score: 0
Accepted
time: 0ms
memory: 3812kb
input:
2 4 d a a bc ba bc b a a a d a a cb c c 4 a b da b b d ad b db b a c da b c b
output:
abcd bdac
result:
ok OK
Test #3:
score: -100
Wrong Answer
time: 7ms
memory: 3860kb
input:
50 3 b b b a a c b b cc 4 d ab c ad d b ba ab c b d d d d d a 5 a aa aa ab ab ae b b e c c c ba c c c c dd d d dd c e c e 6 a ca a a a a a a ce a a b ba ba bc bc bd be e c c ca a cd cd be d d dc dc e e a eb f f 7 a a a a a a a a cf a a a a b b b b c c c cf a dd d dc d dd e f ed ee ee fb eg eg eg eg ...
output:
bca dabc cadbe abcdef aefdcgb fcheabgd bhgfedcia jhcgfideba fjbadkegcih klhgjbaedcif igkjmclfedhba nflijahgmbdcek anmlfijbgkhdceo nofmlkjchdbegipa aponblgjihcfqdkme iqmonhckfrpgjedlba prisodmbkjqghfencla tcrdpoaklmjihfgeqsbn utiraponmlksghjfecdbq qotsrvjunmlkpiegfhdcba pvutsrhwoimlnjkqgfedbca xbvuts...
result:
wrong answer The product 3*20=60 is not in the output at case #21