QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#36088 | #4229. GCD Harmony | deneribeiro10 | TL | 25ms | 34824kb | C++ | 1.1kb | 2022-06-24 07:58:38 | 2022-06-24 07:58:39 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define ll long long
// #define endl '\n'
const int INF = 1e9;
const ll INFLL = 1e18;
const int MAX = 1e6+10;
const int MOD = 1000000007;
int gcd(int a, int b) {
return b ? gcd(b, a%b) : a;
}
int n;
vector<int> adj[MAX];
int v[MAX];
int dp[5050][300];
int DP(int node, int par, int val) {
int &ans = dp[node][val];
if(ans != -1) return ans;
ans = INF;
for(int i=2; i<=250; ++i) {
if(gcd(i, val) != 1 or par == 0) {
int sum = (i != v[node] ? i : 0);
for(int to : adj[node]) if(to != par) {
sum += DP(to, node, i);
}
ans = min(ans, sum);
}
}
return ans;
}
void test_case() {
cin >> n;
for(int i=1; i<=n; ++i) cin >> v[i];
for(int i=0; i<n-1; ++i) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
memset(dp, -1, sizeof dp);
cout << DP(1, 0, 0) << endl;
}
int main() {
cin.tie(0);
cout.tie(0);
ios_base::sync_with_stdio(0);
test_case();
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 24ms
memory: 33804kb
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: 10ms
memory: 34620kb
input:
3 1 2 3 3 1 2 3
output:
4
result:
ok single line: '4'
Test #3:
score: 0
Accepted
time: 25ms
memory: 34824kb
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: 14ms
memory: 33428kb
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: 17ms
memory: 33560kb
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: -100
Time Limit Exceeded
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...