QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#277774 | #7886. Not Another Eulerian Number Problem | Zaoly | AC ✓ | 444ms | 3728kb | C++20 | 1.7kb | 2023-12-06 22:39:03 | 2023-12-06 22:39:03 |
Judging History
answer
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
const int N = 10;
int alpha, n, m, n0;
int subperm[N], oriperm[N];
bool is_order_perm()
{
int occurs[N + 1]{};
for (int i = 0; i < n * alpha; ++i)
++occurs[oriperm[i]];
for (int i = 1; i <= n; ++i)
if (occurs[i] != alpha)
return false;
for (int i = 0; i < n * alpha; ++i)
for (int j = i + 1; j < n * alpha; ++j)
{
if (oriperm[i] != oriperm[j])
continue;
for (int k = i + 1; k < j; ++k)
if (oriperm[k] < oriperm[i])
return false;
}
return true;
}
bool is_subseq()
{
int ptr = 0;
for (int i = 0; i < n * alpha; ++i)
if (ptr < n0 * alpha && oriperm[i] == subperm[ptr])
++ptr;
return ptr == n0 * alpha;
}
bool check_indices()
{
int greater_cnt = 0;
for (int i = 0; i < n * alpha - 1; ++i)
if (oriperm[i] > oriperm[i + 1])
++greater_cnt;
return greater_cnt == m;
}
int factorial(int n)
{
int result = 1;
for (int i = 1; i <= n; ++i)
result *= i;
return result;
}
int powi(int base, int exponent)
{
int result = 1;
for (int i = 0; i < exponent; ++i)
result *= base;
return result;
}
int main()
{
int assist[N]{};
int result = 0;
cin >> alpha >> n >> m >> n0;
for (int i = 0; i < n0 * alpha; ++i)
cin >> subperm[i];
for (int i = 0; i < n * alpha; ++i)
assist[i] = i;
do
{
for (int i = 0; i < n * alpha; ++i)
oriperm[assist[i]] = i / alpha + 1;
if (is_order_perm() && is_subseq() && check_indices())
++result;
} while (next_permutation(assist, assist + n * alpha));
result /= powi(factorial(alpha), n);
cout << result << '\n';
return 0;
}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3636kb
input:
1 4 2 2 2 1
output:
7
result:
ok 1 number(s): "7"
Test #2:
score: 0
Accepted
time: 2ms
memory: 3584kb
input:
2 4 2 2 1 2 2 1
output:
19
result:
ok 1 number(s): "19"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3576kb
input:
1 1 0 1 1
output:
1
result:
ok 1 number(s): "1"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3708kb
input:
3 1 0 1 1 1 1
output:
1
result:
ok 1 number(s): "1"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3640kb
input:
4 1 0 1 1 1 1 1
output:
1
result:
ok 1 number(s): "1"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3704kb
input:
5 1 0 1 1 1 1 1 1
output:
1
result:
ok 1 number(s): "1"
Test #7:
score: 0
Accepted
time: 444ms
memory: 3700kb
input:
10 1 0 1 1 1 1 1 1 1 1 1 1 1
output:
1
result:
ok 1 number(s): "1"
Test #8:
score: 0
Accepted
time: 0ms
memory: 3704kb
input:
1 3 2 1 1
output:
1
result:
ok 1 number(s): "1"
Test #9:
score: 0
Accepted
time: 11ms
memory: 3628kb
input:
3 3 2 3 2 2 2 3 3 3 1 1 1
output:
0
result:
ok 1 number(s): "0"
Test #10:
score: 0
Accepted
time: 11ms
memory: 3580kb
input:
3 3 2 2 1 1 2 2 2 1
output:
5
result:
ok 1 number(s): "5"
Test #11:
score: 0
Accepted
time: 11ms
memory: 3576kb
input:
3 3 2 1 1 1 1
output:
15
result:
ok 1 number(s): "15"
Test #12:
score: 0
Accepted
time: 11ms
memory: 3640kb
input:
3 3 1 2 2 2 2 1 1 1
output:
2
result:
ok 1 number(s): "2"
Test #13:
score: 0
Accepted
time: 0ms
memory: 3636kb
input:
1 4 0 4 4 2 1 3
output:
0
result:
ok 1 number(s): "0"
Test #14:
score: 0
Accepted
time: 2ms
memory: 3640kb
input:
2 4 1 4 1 4 4 3 3 2 2 1
output:
0
result:
ok 1 number(s): "0"
Test #15:
score: 0
Accepted
time: 2ms
memory: 3728kb
input:
2 4 2 4 1 3 3 2 2 4 4 1
output:
1
result:
ok 1 number(s): "1"
Test #16:
score: 0
Accepted
time: 2ms
memory: 3640kb
input:
2 4 2 1 1 1
output:
58
result:
ok 1 number(s): "58"
Test #17:
score: 0
Accepted
time: 2ms
memory: 3632kb
input:
2 4 1 2 1 1 2 2
output:
14
result:
ok 1 number(s): "14"
Test #18:
score: 0
Accepted
time: 2ms
memory: 3640kb
input:
1 8 7 3 2 1 3
output:
0
result:
ok 1 number(s): "0"
Test #19:
score: 0
Accepted
time: 2ms
memory: 3572kb
input:
1 8 0 4 1 2 3 4
output:
1
result:
ok 1 number(s): "1"
Test #20:
score: 0
Accepted
time: 2ms
memory: 3700kb
input:
1 8 4 4 4 3 1 2
output:
771
result:
ok 1 number(s): "771"
Test #21:
score: 0
Accepted
time: 2ms
memory: 3636kb
input:
1 8 1 4 4 3 2 1
output:
0
result:
ok 1 number(s): "0"
Test #22:
score: 0
Accepted
time: 2ms
memory: 3644kb
input:
1 8 7 1 1
output:
1
result:
ok 1 number(s): "1"
Test #23:
score: 0
Accepted
time: 16ms
memory: 3588kb
input:
1 9 2 5 4 3 1 5 2
output:
0
result:
ok 1 number(s): "0"
Test #24:
score: 0
Accepted
time: 17ms
memory: 3560kb
input:
1 9 7 8 6 5 8 3 4 7 2 1
output:
0
result:
ok 1 number(s): "0"
Test #25:
score: 0
Accepted
time: 17ms
memory: 3728kb
input:
1 9 7 7 5 3 2 4 7 6 1
output:
0
result:
ok 1 number(s): "0"
Test #26:
score: 0
Accepted
time: 16ms
memory: 3660kb
input:
1 9 7 6 2 1 3 5 6 4
output:
0
result:
ok 1 number(s): "0"
Test #27:
score: 0
Accepted
time: 16ms
memory: 3640kb
input:
1 9 3 3 1 2 3
output:
20420
result:
ok 1 number(s): "20420"
Test #28:
score: 0
Accepted
time: 183ms
memory: 3592kb
input:
1 10 0 10 5 6 10 1 3 2 4 7 8 9
output:
0
result:
ok 1 number(s): "0"
Test #29:
score: 0
Accepted
time: 181ms
memory: 3572kb
input:
1 10 7 2 2 1
output:
30973
result:
ok 1 number(s): "30973"
Test #30:
score: 0
Accepted
time: 181ms
memory: 3704kb
input:
1 10 1 6 6 3 5 2 4 1
output:
0
result:
ok 1 number(s): "0"
Test #31:
score: 0
Accepted
time: 177ms
memory: 3580kb
input:
1 10 2 1 1
output:
47840
result:
ok 1 number(s): "47840"
Test #32:
score: 0
Accepted
time: 179ms
memory: 3576kb
input:
1 10 5 2 2 1
output:
689155
result:
ok 1 number(s): "689155"
Extra Test:
score: 0
Extra Test Passed