QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#277774#7886. Not Another Eulerian Number ProblemZaolyAC ✓444ms3728kbC++201.7kb2023-12-06 22:39:032023-12-06 22:39:03

Judging History

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

  • [2023-12-06 22:39:03]
  • 评测
  • 测评结果:AC
  • 用时:444ms
  • 内存:3728kb
  • [2023-12-06 22:39:03]
  • 提交

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