cd1101d 简单dp

链接

codeforces

思路

所有数的质因数存下来,最多6个。

然后\(f[i][j][0/1]\)表示i子树内链gcd为j的i是否为链头。

暴力转移就行了

代码

#include <bits/stdc++.h>
using namespace std;
const int _=2e5+7,N=2e5;
int n,pri[_],vis[_],cnt;
vector<int> G[_],dsr[_];
unordered_map<int,int> id[_];
void Euler() {
for(int i=2;i<=N;++i) {
if(!vis[i]) {
pri[++cnt]=i;
for(int j=i+i;j<=N;j+=i) vis[j]=1;
}
}
}
int f[_][7][2],ans=0;
void dfs(int u,int fa) {
for(int i=0;i<(int)dsr[u].size();++i) f[u][i][0]=f[u][i][1]=1;
int las[7]={};
for(auto v:G[u]) {
if(v==fa) continue;
dfs(v,u);
for(auto x:dsr[u]) {
if(id[v].count(x)) {
int a=id[u][x],b=id[v][x];
f[u][a][1]=max(f[u][a][1],f[v][b][0]+las[a]+1);
las[a]=max(las[a],f[v][b][0]);
f[u][a][0]=max(f[u][a][0],f[v][b][0]+1);
}
}
}
for(int i=0;i<(int)dsr[u].size();++i) ans=max(ans,f[u][i][1]);
}
int main() {
// freopen("a.in","r",stdin);
Euler();scanf("%d",&n);
for(int i=1,val,js;i<=n;++i) {
scanf("%d",&val),js=0;
for(int j=1;pri[j]*pri[j]<=cnt;++j) {
if(val%pri[j]==0) {
dsr[i].push_back(pri[j]),id[i][pri[j]]=js++;
while(!(val%pri[j])) val/=pri[j];
}
} if(val!=1) dsr[i].push_back(val),id[i][val]=js++;
}
for(int i=1,u,v;i<n;++i) {
scanf("%d%d",&u,&v);
G[u].push_back(v),G[v].push_back(u);
}
dfs(1,0);
cout<<ans<<"\n";
return 0;
}

最新文章

  1. BaseDao代码,用于连接数据库实行增删改查等操作
  2. Hadoop是什么?一句话理解
  3. xcrun: error: active developer path (&quot;/XX&quot;) does not exist
  4. win8自动升级win8.1后 wampserver无法启动
  5. Go返回参数命名
  6. 淘宝技术发展(Java时代:脱胎换骨)
  7. App运营者必须知道的30款数据分析工具
  8. Mvc.JQuery.Datatables
  9. 8086FLAG寄存器
  10. oracle2
  11. Android开发艺术探索》读书笔记 (12) 第12章 Bitmap的加载和Cache
  12. spring MVC通过json与前台交互
  13. git 安装 和 基本操作
  14. Codeforces780C
  15. JavaScript 数值Number类型详解
  16. Linux的打印rpm包的详细信息的shell脚本
  17. 7.STM32中GPIO理解
  18. Javascript高级编程学习笔记(72)—— 模拟事件(2)IE事件模拟
  19. ESP8266的低功耗方案-睡眠模式
  20. 第26月第18天 mybatis_spring_mvc

热门文章

  1. 中秋快乐,分享福利脑图:入门spring cloud
  2. 用 qemu-user 在arm linux机器上运行amd64/x86程序
  3. linq,skip(),take实现分页
  4. Entity Framework 导航属性(2)
  5. asp.net实现页面跳转后不可以返回
  6. python numba讲解
  7. Docker制作dotnet core控制台程序镜像
  8. CI/CD DevOps
  9. Lodash 严重安全漏洞背后 你不得不知道的 JavaScript 知识
  10. supervisor 管理应用程序