QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#518700 | #4229. GCD Harmony | kng | WA | 2ms | 3928kb | C++17 | 1.9kb | 2024-08-14 01:09:21 | 2024-08-14 01:09:22 |
Judging History
answer
#include<bits/stdc++.h>
#define For(i,n) for(int i=1;i<=n;++i)
#define maxn 5005
#define fi first
#define se second
#define inf 2000000000
#define lnf 2000000000000000000
#define _ push_back
#define ll long long
#define II pair<int,int>
#define III pair<II,int>
#define ve vector<int>
#define task
using namespace std;
int dp[maxn][1400];
vector<int> adj[maxn];
int a[maxn];
int n;
vector<int> divi;
int e[maxn];
vector<int> snt;
vector<int> ntcn[26];
void dfs(int u, int dad) {
for(int v:adj[u]) if(v!=dad) {
dfs(v,u);
}
for(int i=0;i<divi.size();++i) if(a[u]!=divi[i]) dp[u][i]=divi[i];
for(int v:adj[u]) if(v!=dad){
for(int i=0;i<snt.size();++i) {
int kq=2*n;
for(int j=0;j<ntcn[i].size();++j) {
kq=min(kq,dp[v][ntcn[i][j]]);
}
for(int j=0;j<ntcn[i].size();++j) {
dp[u][ntcn[i][j]] += kq;
}
}
}
}
void inp(){
cin >> n;
For(i,n)
cin >> a[i];
for(int i=1;i<n;++i) {
int u, v;
cin >> u >> v;
adj[u]._(v);
adj[v]._(u);
}
}
void outp(){
for(int i=1;i<=100;++i) {
e[i]=i;
}
for(int i=2;i*i<=100;++i)
if(e[i]==i)
for(int j=i+i;j<=100;j+=i)
e[j]=i;
for(int i=2;i<=100;++i) if(e[i]==i) snt._(i);
for(int i=2;i<=10000;++i) {
int y=i;
for(int x : snt) {
if(y%x==0) y/=x;
}
if(y==1) divi._(i);
}
for(int i=1;i<=n;++i) {
int y=a[i];
int kw=1;
while(y>1) {
int p=e[y];
while(y%p==0) y/=p;
kw*=p;
}
a[i]=kw;
}
int kq=2*n;
for(int i=0;i<snt.size();++i) {
for(int j=0;j<divi.size();++j) if(divi[j]%snt[i]==0) ntcn[i]._(j);
}
dfs(1,0);
for(int i=0;i<divi.size();++i) kq=min(kq,dp[1][i]);
cout << kq;
}
int main(){
if(fopen(task".inp","r")) {
freopen(task".inp","r",stdin);
freopen(task".out","w",stdout);
}
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
inp();
outp();
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3928kb
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: 3848kb
input:
3 1 2 3 3 1 2 3
output:
4
result:
ok single line: '4'
Test #3:
score: -100
Wrong Answer
time: 2ms
memory: 3908kb
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:
21
result:
wrong answer 1st lines differ - expected: '15', found: '21'