QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#697209 | #6611. United in Stormwind | chzhc_ | WA | 1ms | 3700kb | C++14 | 1.7kb | 2024-11-01 11:55:01 | 2024-11-01 11:55:02 |
Judging History
answer
#include <bits/stdc++.h>
template < typename T >
inline void read(T &cnt) {
cnt = 0; char ch = getchar(); bool op = 1;
for (; ! isdigit(ch); ch = getchar())
if (ch == '-') op = 0;
for (; isdigit(ch); ch = getchar())
cnt = cnt * 10 + ch - 48;
cnt = op ? cnt : - cnt;
}
const int N = (1 << 20) + 5;
int n, m;
long long k, ans;
double num[N];
char s[N];
inline void FWT_XOR(double *A) {
for (int len = 2; len <= (1 << m); len *= 2)
for (int x = 0; x < (1 << m); x += len)
for (int i = x; i < x + len / 2; ++ i) {
A[i] = (A[i] + A[i + len / 2]);
A[i + len / 2] = (A[i] - 2 * A[i + len / 2]);
}
}
inline void IFWT_XOR(double *A) {
for (int len = (1 << m); len >= 2; len /= 2)
for (int x = 0; x < (1 << m); x += len)
for (int i = x; i < x + len / 2; ++ i) {
A[i + len / 2] = (A[i] - A[i + len / 2]) / 2;
A[i] = (A[i] - A[i + len / 2]);
}
}
int main() {
read(n), read(m), read(k);
for (int i = 1; i <= n; ++ i) {
scanf("%s", s); int x = 0;
for (int j = 0; j < m; ++ j) {
x = x * 2 + (s[j] - 'A');
}
num[x] += 1;
}
FWT_XOR(num);
for (int i = 0; i < (1 << m); ++ i)
num[i] = num[i] * num[i];
IFWT_XOR(num);
for (int i = 0; i < (1 << m); ++ i)
for (int x = 0; x < m; ++ x)
if ((i >> x) & 1)
num[i] = (num[i] + num[i ^ (1 << x)]);
for (int i = 0; i < (1 << m); ++ i) {
if (1ll * n * n - (long long)(num[((1 << m) - 1) ^ i] + 0.5) >= 2 * k)
ans ++;
}
std::cout << ans << '\n';
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3616kb
input:
2 2 1 AA BB
output:
3
result:
ok 1 number(s): "3"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3680kb
input:
2 2 1 AA AB
output:
2
result:
ok 1 number(s): "2"
Test #3:
score: -100
Wrong Answer
time: 1ms
memory: 3700kb
input:
5000 10 12302135 AABAAAABBA AAABAABBAB BAABABAAAB ABBAABBBBA BAAAAABAAB BABBAAAAAA BABBABABAB BBABBAAAAB BABBABBBBA AAAAAAABAA BBBBBAABBA BAABABBAAB BABAAABAAA AAAAABAABB BBABAABABB ABAABBABBA BBBAAABABA BAAABABBAB ABAAAAABAA AABBBBBBAA ABBABBABBA AABBBABBAB BAABBAAABB BAAABBBBBB ABABBAABBB BABBABBA...
output:
56
result:
wrong answer 1st numbers differ - expected: '300', found: '56'