QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#626343#4229. GCD Harmonynickbelov#TL 3111ms8432kbC++203.1kb2024-10-10 05:05:362024-10-10 05:05:36

Judging History

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

  • [2024-10-10 05:05:36]
  • 评测
  • 测评结果:TL
  • 用时:3111ms
  • 内存:8432kb
  • [2024-10-10 05:05:36]
  • 提交

answer

#include <vector>
#pragma GCC target ("avx2")
#pragma GCC optimize ("O3")
#pragma GCC optimize ("unroll-loops")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>

using namespace std;
using namespace __gnu_pbds;

template<typename T>
ostream_iterator<T> oit(const string &s = " "){ return ostream_iterator<T>(cout,s.c_str()); }
inline auto rep(int l, int r) { return views::iota(min(l, r), r); }
inline auto rep(int n) { return rep(0, n); }
inline auto rep1(int l, int r) { return rep(l, r + 1); }
inline auto rep1(int n) { return rep(1, n + 1); }
inline auto per(int l, int r) { return rep(l, r) | views::reverse; }
inline auto per(int n) { return per(0, n); }
inline auto per1(int l, int r) { return per(l, r + 1); }
inline auto per1(int n) { return per(1, n + 1); }
#define A(a) begin(a),end(a)
inline auto len = ranges::ssize;

struct chash {
    static uint64_t splitmix64(uint64_t x) {
        // http://xorshift.di.unimi.it/splitmix64.c
        x += 0x9e3779b97f4a7c15;
        x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
        x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
        return x ^ (x >> 31);
    }

    size_t operator()(uint64_t x) const {
        static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
        return splitmix64(x + FIXED_RANDOM);
    }
};
template<typename T, typename U> using pb_map = gp_hash_table<T, U, chash>;
template<typename T> using pb_set = gp_hash_table<T, null_type, chash>;
#define K first
#define V second

using ll = long long;
using ld = long double;

using vi = vector<int>;
using vii = vector<vector<int>>;
typedef vector<ll> vll;
using pll = pair<ll,ll>;
using pii = pair<int,int>;

constexpr ll NN = 5000,M = 218; 

vi nm(101);
int dp[NN][M];
vi adj[NN];
int a[NN];

void dfs(int i,int p){
    if(p != -1) adj[i].erase(ranges::find(adj[i],p));
    for(int j : adj[i])
        dfs(j,i);
    
    for(int here=2;here<M;here++){
        if(a[i]!=here) dp[i][here]=here;
        for(int j : adj[i]){
            auto &v = dp[j];
            int add = v[here];

            for(int c=2;c<M;c++){
                if((((nm[c]&1)==0) and ((nm[here]&1)==0))  or (gcd(nm[c],nm[here])>1))
                    add=min(add,v[c]);
            }
            
            dp[i][here]+=add;
        }
    }
}

void run()
{
    int n; cin >> n;
    for(int i : rep(n)) cin >> a[i];   
    for(int u,v; int i : rep(n-1)){
        cin >> u >> v,--u,--v;
        adj[u].push_back(v),adj[v].push_back(u);
    } dfs(0,-1);

    int ans = dp[0][2];
    for(int i : rep(2,M)) ans = min(ans,dp[0][i]);

    cout << ans << '\n';
}

int main()
{
    //KING OF THE WORLD...... U.W.T.B
    cin.tie(0);
    ios_base::sync_with_stdio(false);

    for(int i : rep1(100)) nm[i]=i;

    for(int x : rep1(101,250)){
        int nx = x;
        vi f;
        for(int i = 2;i*i<=nx;i++){
            if(nx%i==0)f.push_back(i);
            while(nx%i==0) nx/=i;
        } if(nx>1) f.push_back(nx);
        if(ranges::max(f)<=100) nm.push_back(x);
    }

    run();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 4ms
memory: 5596kb

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: 2ms
memory: 3552kb

input:

3
1
2
3
3 1
2 3

output:

4

result:

ok single line: '4'

Test #3:

score: 0
Accepted
time: 4ms
memory: 3612kb

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: 3ms
memory: 3820kb

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: 3ms
memory: 3568kb

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: 2889ms
memory: 8164kb

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: 2898ms
memory: 8060kb

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: 0
Accepted
time: 2889ms
memory: 8168kb

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:

5609

result:

ok single line: '5609'

Test #9:

score: 0
Accepted
time: 2893ms
memory: 8168kb

input:

5000
97
96
97
94
96
94
95
95
95
93
95
94
96
96
95
94
93
95
95
97
95
96
94
97
97
97
94
95
93
96
94
94
96
93
93
93
97
94
96
95
94
94
94
97
94
96
93
97
95
97
93
96
93
93
95
97
96
93
94
97
95
94
94
95
96
97
93
94
97
96
97
93
93
93
97
94
94
95
95
95
94
96
95
93
96
97
97
95
94
93
97
93
97
96
94
94
93
93
9...

output:

5497

result:

ok single line: '5497'

Test #10:

score: 0
Accepted
time: 2891ms
memory: 8100kb

input:

5000
79
71
73
97
79
61
61
97
67
61
89
73
67
79
83
97
61
61
61
83
97
83
71
79
97
97
97
71
89
71
83
61
73
89
73
73
73
67
61
97
71
73
89
71
83
67
71
67
73
73
97
79
67
79
89
73
97
97
73
67
61
71
73
83
67
73
71
61
79
61
73
73
89
79
71
89
83
67
71
97
67
71
89
83
71
61
79
89
79
97
83
89
83
79
71
79
89
61
6...

output:

10000

result:

ok single line: '10000'

Test #11:

score: 0
Accepted
time: 2898ms
memory: 8100kb

input:

5000
73
83
73
97
97
73
97
83
83
83
73
83
73
97
97
73
83
73
83
97
97
83
97
73
97
83
97
73
97
73
97
97
83
97
97
83
73
83
97
83
83
73
83
97
73
73
97
83
83
83
97
73
97
97
83
83
97
73
73
97
73
73
97
83
83
97
73
97
83
83
73
97
73
97
73
73
73
73
97
83
97
83
97
73
83
97
83
83
73
73
83
73
83
97
83
83
97
97
8...

output:

10000

result:

ok single line: '10000'

Test #12:

score: 0
Accepted
time: 2880ms
memory: 8108kb

input:

5000
5
5
7
2
2
3
2
7
2
5
5
3
7
7
3
3
7
5
3
3
3
5
2
7
5
2
2
2
3
7
3
5
3
2
3
7
2
2
5
3
7
2
3
7
3
2
7
3
2
5
3
3
5
2
7
5
3
3
5
5
5
5
2
3
2
7
7
2
5
3
3
2
5
7
5
5
7
5
3
5
7
2
7
7
2
7
5
7
5
2
5
7
2
7
2
5
7
2
7
7
5
5
7
7
5
5
3
3
3
7
3
5
7
7
7
7
3
5
3
3
7
5
3
3
2
5
5
3
3
2
7
2
5
7
2
3
2
7
5
7
7
2
7
5
2
3
2
7...

output:

7404

result:

ok single line: '7404'

Test #13:

score: 0
Accepted
time: 2502ms
memory: 8068kb

input:

5000
71
71
71
71
73
71
71
73
73
71
73
73
73
73
73
73
73
73
71
73
71
71
73
73
71
71
73
71
71
71
73
71
71
71
73
73
73
73
71
71
73
71
71
71
71
71
71
73
71
71
71
71
71
73
71
71
71
71
71
73
71
73
73
73
73
73
73
71
71
73
73
71
73
71
71
71
71
71
71
73
73
73
73
71
71
73
73
73
73
71
71
71
73
71
71
71
71
71
7...

output:

10000

result:

ok single line: '10000'

Test #14:

score: 0
Accepted
time: 1066ms
memory: 8196kb

input:

5000
3
5
5
3
5
2
5
3
2
3
5
5
2
5
2
2
2
3
2
5
5
3
3
5
2
2
3
5
2
2
3
3
2
2
2
3
5
5
2
5
2
5
2
3
5
3
3
5
2
3
5
3
3
5
5
5
5
3
3
5
3
2
2
2
3
3
3
5
3
2
5
2
3
2
5
3
2
2
3
2
3
2
5
5
2
2
5
3
2
2
3
5
3
3
2
2
3
5
2
2
3
2
5
3
2
3
3
2
5
5
3
5
5
5
5
3
3
5
3
5
5
3
2
3
5
5
3
3
3
2
3
3
5
3
3
3
2
2
2
3
3
5
2
3
3
3
2
5...

output:

2126

result:

ok single line: '2126'

Test #15:

score: 0
Accepted
time: 1020ms
memory: 8432kb

input:

5000
26
17
19
19
11
19
17
11
26
17
19
17
26
19
11
19
17
11
26
26
11
26
11
11
19
11
17
17
26
19
17
11
26
17
17
11
17
19
11
17
11
26
11
17
11
26
19
17
11
17
19
26
11
19
26
26
17
11
19
17
11
17
17
17
11
26
26
17
19
11
11
19
17
26
19
19
17
19
11
17
11
11
19
17
11
11
11
26
11
17
19
17
26
11
26
17
19
11
1...

output:

5268

result:

ok single line: '5268'

Test #16:

score: 0
Accepted
time: 3111ms
memory: 8400kb

input:

5000
13
11
13
11
13
11
11
11
11
13
13
11
11
11
11
11
13
11
11
11
11
13
11
11
11
13
13
11
11
13
13
13
11
13
13
13
11
11
11
13
13
11
11
13
13
11
11
13
11
13
13
11
13
11
13
13
13
13
13
13
11
13
13
11
11
13
11
11
13
11
13
11
11
11
13
13
13
13
13
13
11
11
13
11
11
11
13
11
13
11
11
13
11
13
11
11
13
13
1...

output:

10000

result:

ok single line: '10000'

Test #17:

score: 0
Accepted
time: 2557ms
memory: 8332kb

input:

5000
3
2
5
5
2
2
5
2
2
3
2
3
2
2
2
5
5
5
2
2
5
2
5
2
3
3
3
2
3
2
5
2
3
2
5
2
3
2
5
2
5
3
5
5
5
3
2
5
5
3
2
2
3
5
3
5
2
2
2
2
5
5
5
2
5
2
2
5
2
2
3
2
3
2
2
5
2
5
2
3
3
3
5
5
3
5
3
2
5
5
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
5
2
5
5
2
2
3
3
2
3
2
2
5
2
2
3
5
3
3
5
2
2
5
5
3
2
3
3
3
3
5
3
3
5
3
5
2
3
2
3
2
3
2...

output:

6330

result:

ok single line: '6330'

Test #18:

score: 0
Accepted
time: 1067ms
memory: 8192kb

input:

5000
6
14
35
14
14
6
14
14
14
6
15
15
10
21
15
6
21
6
6
35
21
21
6
15
35
15
10
14
35
10
15
10
35
6
15
10
14
14
21
15
10
15
14
6
10
21
35
21
21
21
10
21
35
6
35
15
6
35
10
14
15
6
35
14
35
21
35
6
14
10
21
15
10
21
6
14
35
35
15
6
6
10
35
15
21
21
35
10
15
10
14
35
21
21
21
6
6
35
15
21
21
14
14
21
3...

output:

1666

result:

ok single line: '1666'

Test #19:

score: 0
Accepted
time: 1020ms
memory: 8096kb

input:

5000
21
15
6
10
6
14
6
14
10
15
10
14
10
15
35
15
14
14
6
6
10
35
21
14
10
35
10
15
10
6
15
14
15
10
21
21
21
15
35
21
21
6
15
21
6
35
10
10
10
15
10
15
15
10
21
15
35
10
6
15
21
35
15
35
15
35
14
15
10
6
35
10
14
10
14
6
21
10
21
35
10
35
21
14
10
15
10
6
10
35
6
14
6
35
15
21
14
15
35
21
10
35
21
...

output:

510

result:

ok single line: '510'

Test #20:

score: -100
Time Limit Exceeded

input:

5000
5
1
1
1
1
5
1
3
1
1
3
1
1
1
3
3
1
1
1
1
3
1
3
1
1
1
5
3
5
1
3
1
1
1
3
3
1
1
5
1
1
1
5
5
3
5
1
1
1
1
5
1
1
1
5
5
1
1
1
1
1
3
3
1
5
1
5
1
1
3
3
1
1
3
1
3
1
1
1
1
1
1
1
3
1
5
3
3
3
1
3
1
1
5
1
1
1
1
3
3
3
5
5
5
5
3
1
5
5
5
1
3
1
1
1
1
1
5
3
1
3
1
3
3
1
3
3
1
1
5
3
3
3
3
3
5
1
1
1
3
1
1
5
1
1
5
3
1...

output:

9450

result: