QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#524813 | #4890. 这是一道集训队胡策题 | Rong7 | 100 ✓ | 207ms | 4204kb | C++14 | 2.5kb | 2024-08-20 08:13:05 | 2024-08-20 08:13:06 |
Judging History
answer
// Go in my style.
// Not afraid to dark.
#include <bits/stdc++.h>
using namespace std;
#define inline __inline__ __attribute__ ((always_inline))
#define int long long
namespace io {
int pos;
inline int read (int &p = pos){
static int v; static char c;
p = 0, v = 1, c = getchar ();
while (! isdigit (c)){
if (c == '-') v = - 1;
c = getchar ();
}
while (isdigit (c)){
p = (p << 1) + (p << 3) + (c - 48);
c = getchar ();
}
return p *= v;
}
inline int next_blank (){
static char c; c = getchar ();
while (! isdigit (c)) c = getchar ();
return c - 48;
}
inline void write (int x){
static int sta[65], top;
if (x < 0) putchar ('-'), x = - x;
top = 0;
do {
sta[++ top] = x % 10;
x /= 10;
} while (x);
while (top) putchar (sta[top --] + 48);
}
}
const int N = 5e3, mod = 998244353;
int n, fr[N + 5], fc[N + 5], maxr[N + 5], maxc[N + 5];
int ar[N + 5], ac[N + 5], br, bc;
int lasr[N + 5], lasc[N + 5];
int prer[N + 5], prec[N + 5];
int ans;
int inv[N + 5], inj[N + 5], jc[N + 5];
inline int C (int a, int b){
return jc[a] * inj[b] % mod * inj[a - b] % mod;
}
signed main (){
io::read (n);
inv[1] = jc[0] = jc[1] = inj[0] = inj[1] = 1;
for (int i = 2;i <= n;++ i){
inv[i] = inv[i - mod % i] * (mod / i + 1) % mod;
inj[i] = inj[i - 1] * inv[i] % mod;
jc[i] = jc[i - 1] * i % mod;
}
for (int i = 1;i <= n;++ i)
for (int j = 1;j <= n;++ j)
if (io::next_blank ())
++ ar[i], ++ ac[j];
else
++ br, ++ bc;
sort (ar + 1, ar + n + 1, [] (const int &x, const int &y){ return x > y; });
sort (ac + 1, ac + n + 1, [] (const int &x, const int &y){ return x > y; });
lasr[n] = lasc[n] = n;
for (int i = n - 1;i >= 1;-- i){
if (ar[i] == ar[i + 1]) lasr[i] = lasr[i + 1];
else lasr[i] = i;
if (ac[i] == ac[i + 1]) lasc[i] = lasc[i + 1];
else lasc[i] = i;
}
prer[1] = prec[1] = 1;
for (int i = 2;i <= n;++ i){
if (ar[i] == ar[i - 1]) prer[i] = prer[i - 1];
else prer[i] = i;
if (ac[i] == ac[i - 1]) prec[i] = prec[i - 1];
else prec[i] = i;
}
for (int i = 0;i <= n;++ i){
if (i) br += ar[i] - (n - ar[i]), bc += ac[i] - (n - ac[i]);
fr[i] = C (lasr[i] - prer[i] + 1, i - prer[i] + 1);
maxr[i] = br;
fc[i] = C (lasc[i] - prec[i] + 1, i - prec[i] + 1);
maxc[i] = bc;
}
for (int i = 0;i <= n;++ i)
for (int j = 0;j <= n;++ j)
if (maxr[i] + maxc[j] - i * j - (n - i) * (n - j) == n * n)
ans = (ans + fr[i] * fc[j] % mod) % mod;
io::write (ans), putchar ('\n');
return 0;
}
这程序好像有点Bug,我给组数据试试?
详细
Subtask #1:
score: 5
Accepted
Test #1:
score: 5
Accepted
time: 1ms
memory: 3728kb
input:
10 0000000000 0101111001 0101111001 0101111001 0101111001 0101111001 0101111001 0101111001 0101111001 0101111001
output:
591
result:
ok 1 number(s): "591"
Test #2:
score: 5
Accepted
time: 1ms
memory: 3660kb
input:
10 0000000000 0001100000 0001111111 0001111111 0001100000 0001111111 0001110100 0001110100 0001110100 0001110100
output:
47
result:
ok 1 number(s): "47"
Test #3:
score: 5
Accepted
time: 0ms
memory: 3652kb
input:
10 1000000000 1010000000 1010000000 1010111111 1010100111 1010100111 1010100111 1010100100 1010100100 1010100110
output:
30
result:
ok 1 number(s): "30"
Test #4:
score: 5
Accepted
time: 0ms
memory: 3648kb
input:
10 0000110001 0101100000 0100001111 1011000001 0011010000 1010011111 1000111100 1110111101 1000101100 1000110100
output:
2
result:
ok 1 number(s): "2"
Test #5:
score: 5
Accepted
time: 0ms
memory: 3680kb
input:
10 1000010100 1100001111 1111010111 1010000001 1000110111 0100001001 1000111110 0110100010 1010100010 1010110111
output:
2
result:
ok 1 number(s): "2"
Test #6:
score: 5
Accepted
time: 0ms
memory: 3740kb
input:
10 1011001000 1011111011 0111010011 0011110000 0000011100 0101000000 1001100000 1111010011 1110111101 1100010101
output:
2
result:
ok 1 number(s): "2"
Subtask #2:
score: 15
Accepted
Test #7:
score: 15
Accepted
time: 0ms
memory: 3660kb
input:
20 11110010101111111000 01000101111110100000 10110001010110111101 10111111011011110101 10110101011010111101 00010100011011001011 01111111001000101001 10101101011101011100 11011010110101011110 00010100101000001011 00001010100111101100 00100111010010101001 00000010010110110110 11011111100110111100 010...
output:
2
result:
ok 1 number(s): "2"
Test #8:
score: 15
Accepted
time: 0ms
memory: 3616kb
input:
20 01000110110000100100 00010110001100011000 11111000101101101010 10010001100000010100 01101101000000111100 10010111110101011101 00000101010000000110 00001100101111111110 11111110111001101001 00010000001000101011 00010010110110110011 01011011110010011110 01000101111111011101 00010111001101001110 101...
output:
2
result:
ok 1 number(s): "2"
Test #9:
score: 15
Accepted
time: 0ms
memory: 3720kb
input:
20 00000000000000000000 10011101011010000010 10011101011010000010 10011101011010000010 10011101011010000010 10011101011010000010 10011101011010000010 10011101011010000010 10011101011010000010 10011101011010000010 10011101011010000010 10011101011010000010 10011101011010000010 10011101011010000010 100...
output:
526847
result:
ok 1 number(s): "526847"
Test #10:
score: 15
Accepted
time: 0ms
memory: 3552kb
input:
20 00000000000000000000 11101100001001010011 11101100001001010011 11101100001001010011 11101100001001010011 11101100001001010011 11101100001001010011 11101100001001010011 11101100001001010011 11101100001001010011 11101100001001010011 11101100001001010011 11101100001001010011 11101100001001010011 111...
output:
526335
result:
ok 1 number(s): "526335"
Test #11:
score: 15
Accepted
time: 0ms
memory: 3744kb
input:
20 10000000000000000000 11111000110000000000 11111000110000000000 11111000111111111111 11111000111111111111 11111000111111111111 11111000110000000000 11111000111111111111 11111000110000000000 11111000111111111111 11111000111111111111 11111000111010011011 11111000111010011011 11111000111010011011 111...
output:
740
result:
ok 1 number(s): "740"
Test #12:
score: 15
Accepted
time: 1ms
memory: 3592kb
input:
20 10000000000000000000 11110100100000000000 11110100101111111111 11110100100000000000 11110100100000000000 11110100100000000000 11110100101111111111 11110100100000000000 11110100101111111111 11110100101111111111 11110100100000000000 11110100100010000000 11110100100010000000 11110100100010000000 111...
output:
1150
result:
ok 1 number(s): "1150"
Test #13:
score: 15
Accepted
time: 1ms
memory: 3680kb
input:
20 11111111111111111111 10100111111111111111 10100100000000000000 10100100000000000000 10100111111111111111 10100100000000000000 10100100000000000000 10100111001100101111 10100111001100101111 10100111001100100000 10100111001100101111 10100111001100100000 10100111001100100000 10100111001100101111 101...
output:
189
result:
ok 1 number(s): "189"
Subtask #3:
score: 40
Accepted
Test #14:
score: 40
Accepted
time: 1ms
memory: 3648kb
input:
300 01110011110110110011100111010000101110110001000111111011100101101101101011110101110100110110001110111010101011111010010101001000100011001110110100110000111001011011100000011100000000000001101000010110110000110001110000010110100010110110111000110000100101110011111010001100110111001010000100110110...
output:
2
result:
ok 1 number(s): "2"
Test #15:
score: 40
Accepted
time: 1ms
memory: 3684kb
input:
300 00101101101001110001110111101010000101010101100001110010001101001011011110111000110110101101111100010010011111010011101011110001011011111110001110100110101010100111001110001100111011010110010010111101001001101000000000011101011000111100101000101110111011001111111000111000100111100110101001011101...
output:
2
result:
ok 1 number(s): "2"
Test #16:
score: 40
Accepted
time: 0ms
memory: 3696kb
input:
300 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
936335109
result:
ok 1 number(s): "936335109"
Test #17:
score: 40
Accepted
time: 1ms
memory: 3720kb
input:
300 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
124904823
result:
ok 1 number(s): "124904823"
Test #18:
score: 40
Accepted
time: 1ms
memory: 3752kb
input:
300 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
923149686
result:
ok 1 number(s): "923149686"
Test #19:
score: 40
Accepted
time: 1ms
memory: 3648kb
input:
300 01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
254929271
result:
ok 1 number(s): "254929271"
Test #20:
score: 40
Accepted
time: 1ms
memory: 3680kb
input:
300 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
12177
result:
ok 1 number(s): "12177"
Subtask #4:
score: 5
Accepted
Test #21:
score: 5
Accepted
time: 198ms
memory: 4108kb
input:
5000 0000111111000001000100111100110001110111011000101000110111100011111110110011101001111001111101010001111101110011110101010011010010000000001111000111101111010010110100000110111101100000010111111110001001010100101110100010100000011100000101011011101010011111101011000110001001011010000010000101111...
output:
2
result:
ok 1 number(s): "2"
Test #22:
score: 5
Accepted
time: 205ms
memory: 4124kb
input:
5000 0010011001001111110110000001101010000101010111000001101101011100001001011101010000001111010001101001111000101001011011001000111110010001111011011101010000110000010100010110011010000110111110111100110100001010110010001011010010001001101110000000111110111111000110000011010011100001110011111010001...
output:
2
result:
ok 1 number(s): "2"
Test #23:
score: 5
Accepted
time: 207ms
memory: 4204kb
input:
5000 1100111111010100100110101001011111001111000111111010110110010101011010010001111010101001101110111111100100101111010111001111100001100101111111000010100011000110100010010110111111100001100010000111101011110111100010010000001110011110001110110001000101111010110011111001111001011011110010101000000...
output:
2
result:
ok 1 number(s): "2"
Subtask #5:
score: 35
Accepted
Test #24:
score: 35
Accepted
time: 92ms
memory: 4072kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
828414647
result:
ok 1 number(s): "828414647"
Test #25:
score: 35
Accepted
time: 104ms
memory: 4120kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
16621460
result:
ok 1 number(s): "16621460"
Test #26:
score: 35
Accepted
time: 198ms
memory: 4140kb
input:
5000 1010110111100100001010010010100011000101011011111111101001100001101101011001001110101011110101001110010011110111101001011010010001100100111010100100000011101101000100010001011001101100000000000000011001100101111101110010111101000000010001000101110111100011100110101001001000001101111010001111010...
output:
2
result:
ok 1 number(s): "2"
Test #27:
score: 35
Accepted
time: 117ms
memory: 4124kb
input:
5000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
541497915
result:
ok 1 number(s): "541497915"
Test #28:
score: 35
Accepted
time: 149ms
memory: 4192kb
input:
5000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
288388087
result:
ok 1 number(s): "288388087"
Test #29:
score: 35
Accepted
time: 133ms
memory: 4124kb
input:
5000 0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
352199570
result:
ok 1 number(s): "352199570"
Test #30:
score: 35
Accepted
time: 113ms
memory: 4200kb
input:
5000 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
410201481
result:
ok 1 number(s): "410201481"
Extra Test:
score: 0
Extra Test Passed