CF1101D GCD Counting

又被trick了

不用什么点分治

直接树形dp即可

开始的想法:

f[x][j]x为根的子树gcd至少为j(j是x的一个约数)的最长链

然后对y合并。类似于树的直径

但是复杂度还是很大的。。。

这个题的关键是:我们只关心gcd是不是1,并不关心gcd是什么!

gcd不是1,意味着一定有公共质因子!

而质因子个数非常少

可以f[x][j]表示,x为根的子树,往下走,公共质因子为j的最长链

然后甚至可以暴力合并!

显然最优解可以被处理到!

代码:

#include<bits/stdc++.h>
#define reg register int
#define il inline
#define numb (ch^'0')
using namespace std;
typedef long long ll;
il void rd(int &x){char ch;x=0;bool fl=false;while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);for(x=numb;isdigit(ch=getchar());x=x*10+numb);(fl==true)&&(x=-x);
}
namespace Miracle{
const int N=2e5+5;
vector<int>p[N],f[N];
int n;
int ans;
struct node{int nxt,to;
}e[2*N];
int hd[N],cnt;
void add(int x,int y){e[++cnt].nxt=hd[x];e[cnt].to=y;hd[x]=cnt;
}
void dfs(int x,int fa){for(reg i=hd[x];i;i=e[i].nxt){int y=e[i].to;if(y==fa) continue;dfs(y,x);for(reg j=0;j<p[x].size();++j){//    cout<<" j "<<p[x][j]<<endl;for(reg k=0;k<p[y].size();++k){//    cout<<" k "<<p[y][k]<<endl;if(p[x][j]==p[y][k]){ans=max(ans,f[x][j]+f[y][k]);f[x][j]=max(f[x][j],f[y][k]+1);}}}}
}
void div(int x,int id){for(reg i=2;(ll)i*i<=x;++i){if(x%i==0){p[id].push_back(i);f[id].push_back(1);while(x%i==0) x/=i;}}if(x>1){p[id].push_back(x);f[id].push_back(1);}
}
int main(){rd(n);int x;bool flag=false;for(reg i=1;i<=n;++i){rd(x);if(x!=1) flag=true;div(x,i);}if(!flag){puts("0");return 0;}ans=1;int y;for(reg i=1;i<=n-1;++i){rd(x);rd(y);add(x,y);add(y,x);}dfs(1,0);printf("%d",ans);return 0;
}}
signed main(){Miracle::main();return 0;
}/*Author: *Miracle*Date: 2019/1/17 19:37:47
*/

总结:
其实有些时候,题目很麻烦

但是实际上可以简化条件,想想我们关心什么

转载于:https://www.cnblogs.com/Miracevin/p/10284269.html

CF1101D GCD Counting相关推荐

  1. CF990G GCD Counting(树上莫比乌斯反演,分层图,并查集)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 给定一棵点带权无根树,对于每个 k∈[1,2×105]k\in[1,2\times10 ...

  2. Codeforece 990G. GCD Counting(点分治+暴力)

    Codeforece 990G. GCD Counting(点分治+暴力) 题目链接:G. GCD Counting 题意: 给定一个nnn个节点的带权树,求所有点对(x,y)(x,y)(x,y)间简 ...

  3. GCD Counting

    https://codeforces.com/contest/1101/problem/D 题解:

  4. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  5. Educational Codeforces Round 58

    D. GCD Counting 题意: 给出n个点的树,每个点有一个权值,找出一条最长的路径使得路径上所有的点的gcd>1 题解: gcd>1的一定不会有很多.所以暴力搞一下就行,不需要点 ...

  6. c++ hashset的用法_c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例

    c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...

  7. 【CF套题】 Educational Codeforces Round 58

    [前言] 组队CF之帮wyl上橙,我和sc打小号上紫. 结果sc成功FST两题,wyl成功skipped. 我的小号幸存了qwq. [题目] 原题地址 A.Minimum Integer 特判一下dd ...

  8. 【牛客 - 303B第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Fibonacci and Counting(Fib数性质,gcd辗转相除法性质)

    题干: 我们这样定义斐波那契数列,F[1]=1,F[2]=1,当n>2时F[n]=F[n-1]+F[n-2]. 斐波那契数列的前10项为:1,1,2,3,5,8,13,21,34,55. 欧几里 ...

  9. uva11401:Triangle Counting 递推 数学

    uva11401:Triangle Counting 题目读不清楚的下场就是多做两个小时...从1-n中任选3个不重复数字(不重复啊!!坑爹啊!)问能组成三角形的有多少个, 显然1~n能组成的三角形集 ...

最新文章

  1. 哆啦a梦简单图画python编程_[python]画哆啦A梦,Python,绘制
  2. Kali国内源更新sources.list
  3. 2.6内核的配置与编译
  4. 董海冰:2018风云再起 ,期待AV1、AI和AR
  5. Leetcode1512. 好数对的数目 抽出本质原型 利用范围条件
  6. windows2003管理组创建
  7. C#中图片单击旋转事件
  8. 求职互联网数据分析,如何准备行业知识?
  9. redis永久化存储
  10. contentprovider java_ContentProvider和数据库的区别
  11. birt插件 web_好用的国产web报表软件非它莫属,轻松搞定复杂报表
  12. Python机器学习入门;推荐一本Python数据分析与机器学习入门书籍-唐宇迪《跟着迪哥学 Python数据分析与机器学习实战》PDF+源代码
  13. 金蝶精斗云PDA移动扫码入库出库,搭配蓝牙打印机打印单据小票
  14. SmtpJS 几行代码实现javascript发送邮件(记录)
  15. 报童问题求解最大利润_OM | 选址问题模型研究——以悠桦林仓库布局实践为例...
  16. SpringBoot 如何执行定时任务
  17. 资深老狐一句感叹:白学了,猫猫究竟有什么魔力,一小时等于十年功?
  18. WineBottler for Mac(Mac 运行 exe 程序工具)破解版安装
  19. 自定义listview和ProgressBar的简单使用
  20. uni-app【判断手机是否安装微信QQ】

热门文章

  1. 经典面试题:给两个序列如何构造一棵二叉树
  2. LeetCode 88合并两个有序数组89格雷编码
  3. 策略模式(Strategy)简介
  4. JavaScript中Console的9个常用调试命令
  5. linux进程的环境变量,LINUX系统学习一(进程、MMU,环境变量、getenv、fork、getpid/ge...
  6. python结束循环_python中break、continue 、exit() 、pass终止循环的区别
  7. 带你了解2020年全新【思科专家级认证CCIE】
  8. 当容器应用越发广泛,我们又该如何监测容器?
  9. Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31
  10. java cookie的有效期_Java Web cookie的有效期