QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#211861#6331. Jewel Gamesinsop90WA 94ms23244kbC++141.8kb2023-10-12 21:52:522023-10-12 21:52:52

Judging History

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

  • [2023-10-12 21:52:52]
  • 评测
  • 测评结果:WA
  • 用时:94ms
  • 内存:23244kb
  • [2023-10-12 21:52:52]
  • 提交

answer

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 35, INF = 1e18;
int f[1035][maxn][maxn][2], las[maxn][maxn][2], n, m, A, B, ed;
vector<int> in[maxn], out[maxn];
struct ASK {
	int x, y;
}Q[maxn];
void gett(int S) {
	for(int u = 1;u <= n;u++) for(int v = 1;v <= n;v++) f[S][u][v][0] = f[S][u][v][1] = -INF;
	for(int i = 1;i <= m;i++) {
		if(!(S >> (i - 1) & 1)) continue;
		for(int v = 1;v <= n;v++) {
			for(int u : in[Q[i].x]) {
				if(f[S ^ (1 << i - 1)][Q[i].x][v][1] != -INF) f[S][u][v][0] = max(f[S][u][v][0], Q[i].y - f[S ^ (1 << i - 1)][Q[i].x][v][1]);
				if(f[S ^ (1 << i - 1)][v][Q[i].x][0] != -INF) f[S][v][u][1] = max(f[S][v][u][1], Q[i].y - f[S ^ (1 << i - 1)][v][Q[i].x][0]);
			}
		}
	}
	while(1) {
		for(int u = 1;u <= n;u++) for(int v = 1;v <= n;v++) las[u][v][0] = f[S][u][v][0], las[u][v][1] = f[S][u][v][1];
		for(int u = 1;u <= n;u++) {
			for(int v = 1;v <= n;v++) {
				for(int x : out[u]) if(f[S][x][v][1] != -INF) f[S][u][v][0] = max(f[S][u][v][0], -f[S][x][v][1]);
				for(int x : out[v]) if(f[S][u][x][0] != -INF) f[S][u][v][1] = max(f[S][u][v][1], -f[S][u][x][0]);
			}
		}
		int flag = 0;
		for(int u = 1;u <= n;u++) for(int v = 1;v <= n;v++) for(int op = 0;op <= 1;op ++) if(las[u][v][op] != f[S][u][v][op]) flag = 1;
		if(!flag) break;
	}
	for(int u = 1;u <= n;u++) for(int v = 1;v <= n;v++) for(int op = 0;op <= 1;op++) if(f[S][u][v][op] == -INF) f[S][u][v][op] = 0;
}
signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> n >> ed >> A >> B;
	for(int i = 1, u, v;i <= ed;i++) {
		cin >> u >> v;
		out[u].push_back(v), in[v].push_back(u);
	}
	cin >> m;
	for(int i = 1;i <= m;i++) cin >> Q[i].x >> Q[i].y;
	for(int i = 1;i < (1 << m);i++) gett(i);
	cout << f[(1 << m) - 1][A][B][0];
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3536kb

input:

5 16 1 1
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 2
3 4
3 5
4 2
4 3
4 5
5 2
5 3
5 4
4
2 4
3 84
4 38
5 96

output:

46

result:

ok 1 number(s): "46"

Test #2:

score: 0
Accepted
time: 1ms
memory: 5760kb

input:

8 16 8 4
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 1
1 5
2 6
3 7
4 8
5 1
6 2
7 3
8 4
6
1 29
2 34
3 41
5 7
6 26
7 94

output:

-23

result:

ok 1 number(s): "-23"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3464kb

input:

5 5 2 1
1 1
2 3
3 4
4 5
5 2
2
4 1000000
5 100000

output:

1100000

result:

ok 1 number(s): "1100000"

Test #4:

score: 0
Accepted
time: 0ms
memory: 9796kb

input:

10 20 1 2
1 4
1 7
2 2
2 4
3 6
3 3
4 8
4 7
5 7
5 1
6 9
6 2
7 9
7 3
8 8
8 6
9 7
9 8
10 10
10 2
8
3 92067840
4 2874502
5 36253165
6 70758738
7 4768969
8 16029185
9 16207515
10 44912151

output:

132484345

result:

ok 1 number(s): "132484345"

Test #5:

score: 0
Accepted
time: 90ms
memory: 23032kb

input:

30 900 1 2
2 25
8 21
22 16
26 29
12 24
1 8
7 14
22 27
27 20
5 24
21 21
21 10
30 28
5 16
12 3
16 1
21 2
24 23
24 14
9 7
9 18
20 22
6 1
30 3
11 6
2 17
18 13
28 20
5 15
26 16
9 14
30 23
4 23
4 2
9 5
21 29
1 30
12 14
16 27
28 22
15 7
23 10
13 16
1 15
22 9
13 12
30 18
10 5
25 28
3 17
30 30
7 17
11 24
12 ...

output:

40915541

result:

ok 1 number(s): "40915541"

Test #6:

score: 0
Accepted
time: 94ms
memory: 23244kb

input:

30 900 1 1
16 16
26 15
20 25
9 28
27 1
25 18
12 6
7 26
14 15
28 21
18 19
12 3
26 29
28 24
8 8
22 9
18 3
9 2
26 9
29 21
13 28
21 24
18 2
30 8
1 25
19 26
4 19
2 25
14 27
14 12
2 23
23 15
16 5
9 29
10 27
29 16
16 20
5 8
3 28
12 12
30 7
16 29
30 17
3 11
21 26
18 14
14 6
26 4
21 29
3 6
11 15
22 4
14 18
1...

output:

38892888

result:

ok 1 number(s): "38892888"

Test #7:

score: 0
Accepted
time: 1ms
memory: 3476kb

input:

9 58 5 4
4 6
8 9
5 3
6 5
7 1
5 9
6 3
2 1
4 8
2 9
3 4
1 2
8 5
5 2
1 3
2 3
9 5
4 3
3 1
5 4
9 1
6 7
2 8
7 3
2 5
8 3
2 7
5 8
4 7
9 2
4 5
5 7
3 7
6 8
1 4
9 4
9 8
7 9
1 1
4 4
3 6
1 8
6 6
5 5
9 9
5 1
1 6
2 4
3 2
5 6
3 3
2 6
7 4
6 2
3 9
6 9
8 8
9 7
2
1 28323506
7 18381394

output:

46704900

result:

ok 1 number(s): "46704900"

Test #8:

score: 0
Accepted
time: 1ms
memory: 3560kb

input:

8 11 4 4
4 6
7 6
8 2
5 8
3 4
2 3
8 6
5 1
6 6
1 8
8 4
4
2 75547123
5 9278878
7 13909469
8 57425260

output:

0

result:

ok 1 number(s): "0"

Test #9:

score: 0
Accepted
time: 0ms
memory: 3456kb

input:

4 10 1 2
2 3
1 3
4 4
1 4
3 3
4 3
1 2
3 1
2 4
1 1
2
3 35669800
4 36664186

output:

994386

result:

ok 1 number(s): "994386"

Test #10:

score: 0
Accepted
time: 3ms
memory: 5992kb

input:

17 125 15 14
12 5
13 11
13 12
9 13
16 2
13 3
1 14
16 14
13 10
3 2
17 14
14 12
8 11
10 1
9 8
14 2
13 6
3 3
7 1
11 12
16 17
10 4
15 10
12 11
10 10
4 9
14 16
9 3
4 8
15 5
2 12
7 11
14 1
10 3
4 11
4 4
8 12
8 7
9 16
15 13
17 9
1 10
8 5
13 4
13 16
15 15
9 10
17 4
10 17
2 16
13 1
15 9
5 7
14 11
10 9
5 5
9 ...

output:

-33927098

result:

ok 1 number(s): "-33927098"

Test #11:

score: 0
Accepted
time: 1ms
memory: 3708kb

input:

11 18 8 7
5 11
9 3
1 8
6 11
11 5
5 9
1 9
2 5
10 2
4 10
7 1
6 2
10 8
3 9
8 6
3 7
7 11
2 10
5
2 22754552
5 84549882
6 19922948
9 13449629
11 18334746

output:

-73656757

result:

ok 1 number(s): "-73656757"

Test #12:

score: 0
Accepted
time: 0ms
memory: 3456kb

input:

3 8 2 3
1 3
3 2
1 2
3 3
2 1
2 3
3 1
2 2
1
1 53102229

output:

53102229

result:

ok 1 number(s): "53102229"

Test #13:

score: 0
Accepted
time: 0ms
memory: 3464kb

input:

3 6 1 1
1 3
2 3
3 1
2 2
1 2
2 1
1
3 88674071

output:

88674071

result:

ok 1 number(s): "88674071"

Test #14:

score: 0
Accepted
time: 1ms
memory: 3580kb

input:

10 22 3 3
5 6
2 9
1 4
6 4
7 9
3 4
4 3
4 2
6 3
10 8
8 1
8 2
9 4
5 10
4 10
7 3
7 6
10 9
1 1
1 10
10 5
2 3
4
1 12017417
2 33560186
9 68408625
10 44302781

output:

91168637

result:

ok 1 number(s): "91168637"

Test #15:

score: 0
Accepted
time: 1ms
memory: 3520kb

input:

11 76 11 6
11 9
4 8
4 2
11 4
7 7
9 8
5 2
7 3
1 4
8 8
6 1
2 7
7 4
9 6
10 6
7 9
3 5
1 8
2 11
1 6
4 1
10 2
4 11
4 4
2 8
8 9
11 10
8 4
8 5
3 4
4 5
11 5
11 8
10 3
8 3
7 6
4 9
1 7
1 10
7 5
10 4
5 6
6 10
5 5
7 11
8 11
2 2
6 9
1 5
2 3
8 1
3 10
6 3
9 10
5 8
7 10
1 11
4 3
2 9
5 10
9 5
3 1
5 7
6 5
9 3
5 11
3 6...

output:

18844044

result:

ok 1 number(s): "18844044"

Test #16:

score: 0
Accepted
time: 0ms
memory: 3504kb

input:

5 8 2 5
5 4
4 1
3 5
1 5
1 2
2 5
3 3
3 1
3
1 89861734
3 78638917
4 76333187

output:

-166194921

result:

ok 1 number(s): "-166194921"

Test #17:

score: -100
Wrong Answer
time: 33ms
memory: 23044kb

input:

24 34 21 10
17 17
19 21
22 24
8 4
10 11
7 11
18 20
9 15
17 7
2 8
5 4
13 6
11 5
21 11
12 16
7 23
3 13
16 7
1 3
23 18
6 2
20 24
19 20
14 13
15 9
2 14
4 24
24 1
1 4
5 12
11 22
14 23
2 20
8 15
10
4 32206739
5 86258057
6 28124909
8 30711780
17 1439605
18 98665106
19 35462765
20 42495740
22 94507837
23 65...

output:

156832530

result:

wrong answer 1st numbers differ - expected: '107651072', found: '156832530'