QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#346100#4895. Lovely Dogszzafanti0 399ms21000kbC++202.8kb2024-03-07 20:30:562024-03-07 20:30:56

Judging History

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

  • [2024-03-07 20:30:56]
  • 评测
  • 测评结果:0
  • 用时:399ms
  • 内存:21000kb
  • [2024-03-07 20:30:56]
  • 提交

answer

#include<bits/stdc++.h>

using namespace std;
using E=long long;
using lint=__int128;
constexpr lint inf=1e18+7;
constexpr double INF=log((E)inf);

int n,d;
vector<int> a,mu,w,primes,res;
vector<vector<int>> ver,divs,node;
bitset<200010> st;

E ksm(E a,E b){
  if(b*log(a)>=INF) return inf;
  E ret=1;
  while(b){
    if(b&1) ret=ret*a;
    a=a*a;
    b>>=1;
  }
  return ret;
}

vector<int> fa,hson,sz;
void dfs0(int u){
  sz[u]=1;
  for(auto p:ver[u]){
    if(p==fa[u]) continue;
    fa[p]=u;
    dfs0(p);
    sz[u]+=sz[p];
    if(sz[hson[u]]<sz[p]) hson[u]=p;
  }
}

vector<vector<E>> sum;
void add0(int u,int x){
  for(auto p:divs[x]){
    sum[u][p]+=w[x];
  }
}

void add1(int u,int x){
  if(!w[x]) return ;
  for(auto t:divs[x]){
    if(!mu[t]) continue;
    if(ksm(t,d+1)/x>n) continue;
    E tmp=ksm(t,d+1);
    tmp/=__gcd(tmp,(E)x);
    res[u]+=w[x]*mu[t]*sum[u][tmp];
  }
}

void dfs1(int u){
  if(sz[u]==1){
    sum[u]=vector<E>(n+1);
    node[u].emplace_back(u);
    add0(u,a[u]);
    add1(u,a[u]);
    return ;
  }
  dfs1(hson[u]);
  res[u]+=res[hson[u]];
  node[u].swap(node[hson[u]]);
  sum[u].swap(sum[hson[u]]);
  add0(u,a[u]);
  add1(u,a[u]);
  node[u].emplace_back(u);
  for(auto p:ver[u]){
    if(p==fa[u]||p==hson[u]) continue;
    dfs1(p);
    res[u]+=res[p];
    for(auto pt:node[p]){
      add1(u,a[pt]);
    }
    for(auto pt:node[p]){
      add0(u,a[pt]);
      node[u].emplace_back(pt);
    }
    vector<E>().swap(sum[p]);
    vector<int>().swap(node[p]);
  }
}

int main(){

#ifdef zzafanti
  freopen("in.in","r",stdin);
#endif // zzafanti

  cin.tie(nullptr),cout.tie(nullptr)->sync_with_stdio(false);

  cin>>n>>d;
  ver.resize(n+1); divs.resize(n+1); node.resize(n+1); a.resize(n+1); res.resize(n+1);
  for(int i=1; i<n; i++){
    int x,y;
    cin>>x>>y;
    ver[x].emplace_back(y);
    ver[y].emplace_back(x);
  }
  for(int i=1; i<=n; i++) cin>>a[i];

  mu=w=vector<int>(n+1);
  mu[1]=1;
  for(int i=2; i<=n; i++){
    if(!st[i]){
      primes.emplace_back(i);
      mu[i]=-1;
    }
    for(auto j:primes){
      if(i*j>n) break;
      st[i*j]=1;
      if(i%j==0){
        mu[i*j]=0;
        break;
      }
      mu[i*j]=mu[i]*mu[j];
    }
  }
  for(int i=1; i<=n; i++){
    int x=i; w[i]=1;
    for(int j=2; j*j<=x; j++){
      if(x%j) continue;
      int s=0;
      while(x%j==0) x/=j,s++,w[i]=-w[i];
      if(s>d){
        w[i]=0;
        break;
      }
    }
    if(x>1) w[i]*=-1;
    //cerr<<i<<' '<<w[i]<<' '<<mu[i]<<endl;
  }

  for(int i=1; i<=n; i++){
    for(int j=i; j<=n; j+=i){
      divs[j].emplace_back(i);
    }
  }

  sum.resize(n+1),hson.resize(n+1),sz.resize(n+1),fa.resize(n+1);
  dfs0(1);
  dfs1(1);

  for(int i=1; i<=n; i++){
    cout<<res[i]<<'\n';
  }

  return 0;
}

详细

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3940kb

input:

20 2
18 8
18 11
13 19
10 8
9 11
4 8
9 15
9 17
2 1
13 18
20 18
1 8
12 17
7 16
5 11
16 15
6 19
14 16
1 3
2 15 5 13 20 6 16 18 9 19 17 7 14 10 11 3 1 12 4 8

output:

15
-16
1
1
17
1
0
29
3
1
23
1
3
1
2
1
1
24
1
0

result:

wrong answer 1st words differ - expected: '16', found: '15'

Subtask #2:

score: 0
Runtime Error

Test #24:

score: 10
Accepted
time: 2ms
memory: 4368kb

input:

2000 1
134 1468
867 1750
351 1220
1690 1888
1685 134
585 282
1142 643
206 271
260 1833
1987 770
1029 1667
322 1371
341 518
601 915
119 893
1933 1502
951 1785
1056 1630
1957 1208
96 55
1508 1212
331 427
505 151
1378 1486
1545 697
1459 629
202 997
180 1917
1638 1177
1244 1896
302 658
1433 1605
1318 19...

output:

581
-3
0
0
0
0
0
0
0
-2
0
0
0
0
0
-1
0
0
0
1
0
-1
0
0
-1
0
0
0
17
-2
0
-1
-2
0
0
0
0
0
0
0
-5
0
0
0
0
-14
0
-1
0
-1
0
0
1
1
-1
-4
0
0
1
0
0
0
3
0
0
0
-1
-2
0
0
4
0
0
0
0
-1
0
1
0
0
0
-5
0
0
0
0
-1
0
0
0
0
0
0
0
1
-1
0
18
0
0
13
-2
0
-2
0
0
0
0
2
-2
2
0
0
3
0
-1
0
0
0
0
-3
0
0
0
0
0
0
1
-1
0
0
0
0
0
...

result:

ok 2000 tokens

Test #25:

score: 0
Accepted
time: 2ms
memory: 4384kb

input:

2000 1
1754 1650
906 642
596 1542
1656 1549
716 1578
1799 1182
53 244
1032 41
1290 1758
485 1496
1438 948
1683 684
400 653
1756 1459
1965 1322
1540 1263
1365 1564
108 1801
741 717
1113 13
1787 1124
411 732
64 1817
907 259
1308 29
1518 752
375 422
663 1631
528 799
863 310
790 793
587 579
1828 874
502...

output:

581
0
-1
-1
0
0
0
0
0
0
0
0
0
0
0
0
0
-1
0
0
-12
0
0
0
0
0
0
2
-1
0
0
0
0
0
0
0
0
0
-1
-1
1
0
0
-2
0
20
-1
0
-3
1
0
5
-1
0
0
1
1
0
0
0
0
-1
0
-2
0
0
0
-15
1
1
0
0
0
0
0
1
0
30
0
1
0
0
1
-1
0
0
0
0
-1
0
0
0
0
0
1
0
0
0
0
0
0
0
-1
0
1
0
1
-1
0
-1
0
0
0
0
-3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-1
0
0
0
1
0
0
0...

result:

ok 2000 tokens

Test #26:

score: 0
Accepted
time: 2ms
memory: 4308kb

input:

2000 1
146 1160
146 388
146 1033
382 1917
162 1342
1 1425
1841 764
1674 780
1109 1649
1282 1786
488 1386
1753 1698
17 192
1692 944
693 146
1933 146
976 463
1603 392
1709 248
18 678
146 1157
1517 1416
31 1153
973 39
1359 1046
625 1840
745 146
1316 146
124 146
627 1410
146 540
772 1461
1041 1537
1374 ...

output:

581
0
-36
-192
435
473
506
0
0
358
0
0
0
0
0
0
-180
35
438
0
0
0
607
0
0
0
-17
0
0
26
2
499
0
-180
-85
0
-104
-120
-63
-60
0
0
0
0
598
0
0
0
0
356
592
0
0
0
45
-73
-116
343
0
0
0
0
0
0
31
-108
-5
0
0
0
637
270
494
0
0
487
0
-197
0
401
520
0
0
52
0
128
0
0
82
0
0
0
-22
0
0
0
0
0
0
30
0
0
0
0
0
0
0
0
...

result:

ok 2000 tokens

Test #27:

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

input:

2000 1
681 278
1551 1142
424 928
738 174
1393 1727
456 944
1713 468
359 1597
1265 1737
246 500
1095 695
654 904
1465 27
1172 1385
1455 40
1391 1384
1979 970
1123 800
1618 1892
1444 1506
79 806
313 1350
1872 85
1467 1031
741 1139
739 1681
263 1454
169 885
1222 153
864 799
192 1339
935 1843
1633 1358
...

output:

581
0
-1
0
0
0
1
25
0
0
0
0
1
0
-8
0
0
-3
0
0
0
-2
0
0
-3
0
0
0
0
0
0
0
-3
-1
-1
0
0
-1
1
-2
3
0
0
0
0
0
2
3
0
0
-1
-7
0
0
0
0
0
-7
0
0
-1
1
9
0
0
-1
0
0
0
0
0
-1
-3
-1
1
-3
0
-1
-1
0
-1
-1
-1
-1
0
0
-2
-1
12
-7
-10
0
0
0
-6
0
0
0
0
41
0
0
-15
0
0
0
0
0
1
1
0
0
0
0
0
-7
0
-3
-26
0
0
0
0
0
0
0
0
0
2
...

result:

ok 2000 tokens

Test #28:

score: -10
Runtime Error

input:

2000 2
1608 842
1808 1921
1404 549
594 1521
1755 855
1047 1256
340 1877
407 670
1100 1239
1511 1142
790 1103
1212 944
515 167
180 415
399 1563
1458 136
728 1480
1074 819
555 1594
1693 1301
1802 1879
1936 501
306 87
1125 796
720 1298
1999 1529
767 1396
1258 1940
1651 1564
1059 281
704 848
1861 473
13...

output:


result:


Subtask #3:

score: 0
Runtime Error

Test #45:

score: 0
Runtime Error

input:

200000 20
117994 12616
53490 106425
103660 50033
132640 78252
58384 19939
69183 10015
39098 165030
179856 130356
65245 57831
18234 83378
4240 154896
177149 102260
4634 180087
132390 19627
98506 60775
1890 120740
87908 21917
41323 192721
181885 96684
69412 139951
9800 38301
59025 29879
186185 81402
1...

output:


result:


Subtask #4:

score: 0
Time Limit Exceeded

Test #50:

score: 0
Time Limit Exceeded

input:

200000 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61...

output:


result:


Subtask #5:

score: 0
Time Limit Exceeded

Test #55:

score: 0
Time Limit Exceeded

input:

200000 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61...

output:


result:


Subtask #6:

score: 0
Runtime Error

Test #78:

score: 10
Accepted
time: 339ms
memory: 18888kb

input:

50000 1
8097 41839
17674 41774
40520 8024
5786 38261
20664 43471
1217 49276
11185 40807
14186 25584
31704 14814
42333 41475
13053 39565
45938 30104
5826 39463
5031 10814
43784 6042
58 33849
42978 18978
36307 33276
34769 4351
27884 37532
27528 29431
29451 39345
10946 9667
19016 47269
7911 30103
10308...

output:

-9152
0
0
0
0
0
0
-1
0
-1
0
0
1
0
0
0
0
0
0
0
0
-2
-1
-2
0
-2
0
2
-3
3
0
0
-1
0
0
0
0
0
0
0
0
-2
-1
0
-1
0
2
0
1
0
0
0
0
1
0
0
31
0
0
0
0
0
0
-3
0
-1
26
-2
9
-1
-1
5
0
0
2
0
-1
0
0
0
4
-1
-1
0
-1
0
0
0
0
0
-1
0
0
-2
-1
-1
0
0
4
0
0
0
0
0
0
8
-12
0
0
0
0
0
0
0
9
0
1
0
0
0
0
0
0
0
0
0
0
0
-1
1
0
0
0
-...

result:

ok 50000 tokens

Test #79:

score: 0
Accepted
time: 351ms
memory: 18772kb

input:

50000 1
32034 47865
25944 188
8598 48750
2708 28815
30476 36844
46054 9168
4967 34970
41763 39703
15403 23747
17970 29303
36579 18070
19316 40824
40459 44029
3823 38050
3084 19147
18056 49063
25399 16977
39334 9283
41398 29161
20384 27913
30470 31528
640 5773
1605 32691
48417 23633
27454 6779
19548 ...

output:

-9152
11
14
0
0
7
0
-1
0
0
0
-14
0
0
0
1
0
0
-1
0
0
0
0
3
0
0
0
0
0
0
0
0
0
-2
0
-1
0
0
1
0
0
-50
0
0
0
0
0
0
-1
0
0
0
0
0
0
0
0
0
0
6
5
-1
0
0
1
0
0
0
0
0
-8
0
-16
0
5
0
0
0
0
0
0
-1
0
0
0
-1
0
0
-1
0
0
0
2
0
0
0
0
-2
1
0
0
-5
0
0
0
-13
0
0
0
0
-3
-3
0
0
0
0
0
-1
0
0
0
-1
-1
-1
0
-1
0
-3
0
2
1
0
0
...

result:

ok 50000 tokens

Test #80:

score: 0
Accepted
time: 226ms
memory: 18856kb

input:

50000 1
39371 11897
18057 28366
41597 38680
18057 27889
11426 20379
41380 30688
28903 40347
18057 25169
37754 8154
23412 45346
18057 45516
18057 33624
18057 30696
26612 23615
18718 44663
27320 18057
20424 36013
19003 29291
6016 18057
1718 5947
41466 23544
38799 26926
18057 30495
18057 14852
16829 27...

output:

-9152
0
0
-1472
-7389
-6321
0
-4854
-2735
0
0
0
0
-3769
-2558
0
0
-1531
-2588
-2908
0
-6720
0
0
0
-9803
0
0
0
0
-5494
-2885
-1898
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-3164
0
0
0
0
0
-3224
-4062
-1307
-1030
0
-4877
0
0
-6232
0
0
0
0
-3739
-1918
-4896
0
0
0
-5332
-8995
-1790
0
0
-6320
0
0
-5089
0
-6664
-9...

result:

ok 50000 tokens

Test #81:

score: 0
Accepted
time: 399ms
memory: 21000kb

input:

50000 1
33407 5182
3870 21606
16080 48453
2777 4478
49747 843
42539 32472
2195 15316
9184 16559
39787 27989
15822 46476
3462 8502
15130 37017
31019 7086
13437 19984
3 20139
21162 27689
1067 27927
37709 11407
38509 34963
36180 28194
10151 38894
21219 29603
18000 26175
48974 14856
22675 18606
44861 24...

output:

-9152
0
0
0
-2
-1
0
0
0
0
0
0
0
0
0
0
0
0
-2
0
0
2
0
0
-4
0
0
0
1
0
0
0
0
0
0
0
0
0
11
-2
0
0
0
0
-2
0
31
0
-2
0
0
0
0
-1
0
0
-1
0
-4
-1
-1
0
-1
0
0
0
-5
-1
0
0
0
0
-3
0
-1
-2
-1
0
1
-1
0
0
-2
0
-4
0
0
0
0
0
-1
-5
0
-1
0
0
7
-1
-11
0
2
-1
0
-5
0
0
0
-1
4
0
0
0
0
0
0
0
-3
0
-33
0
0
2
-1
-5
0
0
0
-1
0...

result:

ok 50000 tokens

Test #82:

score: -10
Runtime Error

input:

50000 2
33498 4348
23123 14835
39691 37408
16639 34690
11658 6884
18384 37709
34876 362
31285 46209
46969 43774
42016 8213
20575 17772
6850 7416
22841 15580
29655 11944
39386 14476
43195 12555
17750 39637
38370 1807
23684 7842
15935 30198
37729 13374
37344 19025
18023 42781
2091 42469
20928 26586
34...

output:


result:


Subtask #7:

score: 0
Time Limit Exceeded

Test #103:

score: 0
Time Limit Exceeded

input:

200000 1
118863 188865
188022 168616
118976 119404
178852 33449
81624 40431
151228 160976
68943 136313
57200 117631
147789 139875
100240 55537
164811 145415
103548 186750
15010 168029
155731 107005
69836 1502
86171 122700
83448 131948
189162 94464
128210 2509
49724 183329
174782 192641
27687 71315
1...

output:


result: