QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#346100 | #4895. Lovely Dogs | zzafanti | 0 | 399ms | 21000kb | C++20 | 2.8kb | 2024-03-07 20:30:56 | 2024-03-07 20:30:56 |
Judging History
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...