QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#617755#7882. Linguistics PuzzlehjxddlWA 6ms3760kbC++202.8kb2024-10-06 16:55:002024-10-06 16:55:01

Judging History

你现在查看的是最新测评结果

  • [2024-10-06 16:55:01]
  • 评测
  • 测评结果:WA
  • 用时:6ms
  • 内存:3760kb
  • [2024-10-06 16:55:00]
  • 提交

answer

// Coded by hjxddl
#include <bits/stdc++.h>
#define ll   long long
#define db   double
#define v(x) std::vector<x>
const int N = 2e5 + 5;
int ans[60], n, ans2[60];
int ans1[60][60];
std::string s[60][60];
std::map<std::pair<int, int>, v(int)> mp;
std::map<char, int> id;
std::map<int, char> rid;
v(int) cnt(2600);
v(int) cnt1, cnt2, cnt3, cnt4;
bool dfs(int x) {
    if (x == n + 1) {
        v(int) cnt5 = cnt;
        for (int i = 0; i < n; i++) {
            ans2[ans[i]] = i;
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (s[i][j].size() == 1) {
                    cnt5[ans2[id[s[i][j][0]]]]--;
                    if (cnt5[ans2[id[s[i][j][0]]]] == -1) return 0;
                } else {
                    cnt5[ans2[id[s[i][j][0]]] * n + ans2[id[s[i][j][1]]]]--;
                    if (cnt5[ans2[id[s[i][j][0]]] * n + ans2[id[s[i][j][1]]]] == -1) return 0;
                }
            }
        }
        return 1;
    }
    v(int) &num = mp[{cnt3[x], cnt4[x]}];
    for (auto &y : num) {
        // std::cerr << x << " " << y << " " << ans[y] << '\n';
        if (ans[y]) continue;
        ans[y] = x;
        if (dfs(x + 1)) return 1;
        ans[y] = 0;
    }
    return 0;
}
void init() {
    for (int i = 0; i < n; i++)
        ans[i] = 0;
    mp.clear();
    cnt = v(int)(2600);
    cnt1 = cnt2 = cnt3 = cnt4 = v(int)(n + 5);
}
void solve() {
    std::cin >> n;
    init();
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            std::cin >> s[i][j];
            cnt1[i * j % n]++;
            if (i * j / n)
                cnt2[i * j / n]++;
            cnt[i * j]++;
            if (s[i][j].size() == 1) {
                cnt3[id[s[i][j][0]]]++;
            } else {
                cnt3[id[s[i][j][1]]]++;
                cnt4[id[s[i][j][0]]]++;
            }
        }
    }
    for (int i = 0; i < n; i++)
        mp[{cnt1[i], cnt2[i]}].push_back(i);
    // for (auto [_, x] : mp) {
    //     for (auto it : x) {
    //         std::cerr << it << " " << _.first << " " << _.second << '\n';
    //     }
    // }
    // for (int i = 1; i <= n; i++) {
    //     std::cerr << i << " " << cnt3[i] << " " << cnt4[i] << '\n';
    // }
    dfs(1);
    for (int i = 0; i < n; i++) {
        std::cout << rid[ans[i]];
    }
    std::cout << '\n';
}
int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0), std::cout.tie(0);
    for (int i = 0; i <= 25; i++) {
        id['a' + i] = i + 1;
        rid[i + 1] = char('a' + i);
    }
    for (int i = 26; i <= 51; i++) {
        id['A' + i - 26] = i + 1;
        rid[i + 1] = char('A' + i - 26);
    }
    int t = 1;
    std::cin >> t;
    while (t--) {
        solve();
    }
    std::cout << std::flush;
    // system("pause");
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3748kb

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: 3760kb

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: 6ms
memory: 3736kb

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
pvutsrhwoimlkjnqgfedbca
xbvuts...

result:

wrong answer invalid character