QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#613581#4229. GCD HarmonyForever_Young#TL 223ms4572kbC++141.5kb2024-10-05 14:16:252024-10-05 14:17:41

Judging History

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

  • [2024-10-05 14:17:41]
  • 评测
  • 测评结果:TL
  • 用时:223ms
  • 内存:4572kb
  • [2024-10-05 14:16:25]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
int n,mi[5050][25],v[5050];
vector<int> pr,num,edge[5050];
void dfs(int fa,int x){
    for (int i=0;i<edge[x].size();i++)
    if (edge[x][i]!=fa) dfs(x,edge[x][i]);
    num.push_back(v[x]);
    for (int i=0;i<num.size();i++){
        int tmp=0;
        if (num[i]!=v[x]) tmp=num[i];
        for (int j=0;j<edge[x].size();j++)
        if (edge[x][j]!=fa){
            int now_mi=100000;
            for (int k=0;k<pr.size();k++)
            if (num[i]%pr[k]==0) now_mi=min(now_mi,mi[edge[x][j]][k]);
            tmp+=now_mi;
        }
        for (int j=0;j<pr.size();j++)
        if (num[i]%pr[j]==0) mi[x][j]=min(mi[x][j],tmp);
    }
    num.pop_back();
}
int main(){
    for (int i=2;i<=100;i++){
        int f=1;
        for (int j=2;j*j<=i;j++)
        if (i%j==0) f=0;
        if (f==1) pr.push_back(i);
    }
    for (int i=2;i<=10000;i++){
        int tmp=i;
        for (int j=0;j<pr.size();j++)
        if (tmp%pr[j]==0){
            tmp/=pr[j];
        }
        if (tmp==1) num.push_back(i);
    }
    memset(mi,0x7f,sizeof(mi));
    scanf("%d",&n);
    for (int i=1;i<=n;i++) scanf("%d",&v[i]);
    for (int i=1;i<n;i++){
        int o,p;
        scanf("%d%d",&o,&p);
        edge[o].push_back(p);
        edge[p].push_back(o);
    }
    for (int i=2;i<=100;i++) dfs(0,1);
    int res=1000000;
    for (int i=0;i<pr.size();i++) res=min(res,mi[1][i]);
    printf("%d\n",res);
}

詳細信息

Test #1:

score: 100
Accepted
time: 118ms
memory: 4484kb

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: 54ms
memory: 4572kb

input:

3
1
2
3
3 1
2 3

output:

4

result:

ok single line: '4'

Test #3:

score: 0
Accepted
time: 223ms
memory: 4416kb

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: 162ms
memory: 4508kb

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: 146ms
memory: 4488kb

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...

output:


result: