QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#413089#4229. GCD Harmonyishmeal#WA 1370ms5248kbC++201.5kb2024-05-17 04:27:322024-05-17 04:27:32

Judging History

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

  • [2024-05-17 04:27:32]
  • 评测
  • 测评结果:WA
  • 用时:1370ms
  • 内存:5248kb
  • [2024-05-17 04:27:32]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

vector<int> primes;
const int P = 25;

int main() {
	cin.tie(0)->sync_with_stdio(0);

	for (int i = 2; i <= 100; i++) {
		bool prime = 1;
		for (int j = 2; prime and j*j <= i; j++)
			prime &= i%j != 0;
		if (prime) primes.emplace_back(i);
	}

	int n; cin >> n;
	vector<int> a(n); for (int &v : a) cin >> v;

	vector adj(n, vector<int>());
	for (int i = 1; i < n; i++) {
		int a, b; cin >> a >> b; a--, b--;
		adj[a].emplace_back(b);
		adj[b].emplace_back(a);
	}

	vector dp(n, vector<int>(primes.size(), INT_MAX));
	auto dfs = [&](auto self, int u, int p) {
		if (adj[u].size() == 1 and adj[u][0] == p) {
			for (unsigned i = 0; i < primes.size(); i++) {
				if (gcd(primes[i],a[u]) > 1) dp[u][i] = 0;
				else dp[u][i] = primes[i];
			}
			return;
		}

		map<int,int> cur {{1, 0}, {a[u], 0}};

		for (int v : adj[u]) if (v != p) {
			self(self, v, u);

			map<int,int> cur2;
			auto add = [&](int b, int c) {
				if (cur2.count(b)) cur2[b] = min(cur2[b],c);
				else cur2[b] = c;
			};
			for (auto [i, c] : cur) {
				for (unsigned j = 0; j < primes.size(); j++) {
					if (i % primes[j]) {
						if (i * primes[j] <= 10000)
							add(i*primes[j], c + dp[v][j]);
					} else add(i, c + dp[v][j]);
				}
			}
			swap(cur,cur2);
		}

		for (auto [i, c] : cur)
			for (unsigned j = 0; j < primes.size(); j++)
				if (i % primes[j] == 0)
					dp[u][j] = min(dp[u][j], c + i * (i != a[u]));
	};
	dfs(dfs, 0, 0);

	cout << *min_element(dp[0].begin(), dp[0].end()) << '\n';
}

详细

Test #1:

score: 100
Accepted
time: 3ms
memory: 3564kb

input:

6
5
6
3
4
9
12
1 2
1 3
1 4
1 6
3 5

output:

6

result:

ok single line: '6'

Test #2:

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

input:

3
1
2
3
3 1
2 3

output:

4

result:

ok single line: '4'

Test #3:

score: 0
Accepted
time: 12ms
memory: 3632kb

input:

13
2
5
5
5
5
5
5
3
3
3
3
3
3
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13

output:

15

result:

ok single line: '15'

Test #4:

score: 0
Accepted
time: 8ms
memory: 3600kb

input:

9
2
5
5
5
5
3
3
3
3
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9

output:

14

result:

ok single line: '14'

Test #5:

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

input:

8
13
13
13
2
13
13
13
13
1 2
1 3
1 4
1 5
1 6
1 7
1 8

output:

13

result:

ok single line: '13'

Test #6:

score: 0
Accepted
time: 1302ms
memory: 5176kb

input:

5000
59
25
51
26
33
99
2
13
29
58
5
47
96
83
63
22
69
89
41
90
20
97
85
90
55
17
54
75
54
24
90
54
74
78
81
77
2
47
68
18
60
81
99
86
7
6
76
43
17
43
92
25
36
26
47
100
63
66
2
16
47
25
48
86
24
2
10
42
44
80
92
48
49
21
49
40
32
85
53
88
15
30
4
27
77
16
6
80
50
56
46
14
3
48
92
50
93
35
69
29
48
4...

output:

4778

result:

ok single line: '4778'

Test #7:

score: 0
Accepted
time: 1319ms
memory: 4756kb

input:

5000
15
8
34
68
69
24
72
65
85
5
11
7
24
50
94
98
99
88
99
31
58
93
94
14
92
17
45
61
85
83
66
97
35
52
33
41
98
10
77
59
33
23
21
49
83
93
23
77
60
49
27
2
73
10
31
23
8
73
3
94
19
74
78
82
86
95
14
18
58
15
5
58
99
60
82
34
82
6
96
31
70
6
8
49
82
51
95
52
95
55
94
21
74
83
19
7
99
74
49
65
25
6
5...

output:

4733

result:

ok single line: '4733'

Test #8:

score: -100
Wrong Answer
time: 1370ms
memory: 5248kb

input:

5000
15
15
14
18
19
15
13
18
16
17
16
18
16
16
17
16
19
17
16
19
15
13
17
15
15
14
15
16
16
14
18
15
19
16
18
15
14
13
15
15
13
19
18
15
17
14
15
14
17
16
13
13
19
16
18
19
14
19
17
13
19
14
15
14
15
13
13
17
18
15
17
17
16
16
18
19
19
16
13
16
18
15
15
17
16
15
14
16
13
18
13
18
19
18
15
13
13
14
1...

output:

5612

result:

wrong answer 1st lines differ - expected: '5609', found: '5612'