cf 990G - GCD Counting
#include<bits/stdc++.h>
#define t 200000
#define MAXN 200100
using namespace std; int n;
int fa[MAXN],fa1[MAXN];
long long ans[MAXN],size[MAXN];
vector <int> e[MAXN],Edge[MAXN]; int find(int x){
if (x==fa1[x])
return fa1[x];
else
return fa1[x]=find(fa1[x]);
} void dfs(int x,int y){
int x1,x2;
x1=Edge[x].size();
for (int i=0;i<x1;i++){
x2=Edge[x][i];
if(x2==y)
continue;
fa[x2]=x;
dfs(x2,x);
}
} int main(){
scanf("%d",&n);
int x,y;
for (int i=1;i<=n;i++){
scanf("%d",&x);
e[x].push_back(i);
}
for (int i=1;i<=n-1;i++){
scanf("%d %d",&x,&y);
Edge[x].push_back(y);
Edge[y].push_back(x);
}
dfs(1,-1);
for (int i=1;i<=t;i++){
for (int j=i;j<=t;j+=i){
ans[i]+=e[j].size();
x=e[j].size();
for (int k=0;k<x;k++){
int y=e[j][k];
fa1[y]=y;
size[y]=1;
}
} for (int j=i;j<=t;j+=i){
x=e[j].size();
for (int k=0;k<x;k++){
int y=e[j][k];
if (y==1)
continue;
if (fa1[fa[y]]==0)
continue;
int x1=find(y);
int y1=find(fa[y]);
ans[i]=ans[i]+size[x1]*size[y1];
fa1[x1]=y1;
size[y1]+=size[x1];
}
} for (int j=i;j<=t;j+=i){
x=e[j].size();
for (int k=0;k<x;k++){
int y=e[j][k];
fa1[y]=0;
size[y]=0;
}
}
} for (int i=t;i>=1;i--)
for (int j=i*2;j<=t;j+=i)
ans[i]-=ans[j]; for (int i=1;i<=t;i++)
if (ans[i])
printf("%d %lld\n",i,ans[i]);
return 0;
}
cf 990G - GCD Counting的更多相关文章
- CodeForces - 990G GCD Counting
Discription You are given a tree consisting of nn vertices. A number is written on each vertex; the ...
- CF EDU 1101D GCD Counting 树形DP + 质因子分解
CF EDU 1101D GCD Counting 题意 有一颗树,每个节点有一个值,问树上最长链的长度,要求链上的每个节点的GCD值大于1. 思路 由于每个数的质因子很少,题目的数据200000&l ...
- CF1101D GCD Counting
题目地址:CF1101D GCD Counting zz的我比赛时以为是树剖或者点分治然后果断放弃了 这道题不能顺着做,而应该从答案入手反着想 由于一个数的质因子实在太少了,因此首先找到每个点的点权的 ...
- Educational Codeforces Round 45 (Rated for Div. 2) G - GCD Counting
G - GCD Counting 思路:我猜测了一下gcd的个数不会很多,然后我就用dfs回溯的时候用map暴力合并就好啦. 终判被卡了MLE..... 需要每次清空一下子树的map... #inc ...
- GCD Counting Codeforces - 990G
https://www.luogu.org/problemnew/show/CF990G 耶,又一道好题被我浪费掉了,不会做.. 显然可以反演,在这之前只需对于每个i,统计出有多少(x,y),满足x到 ...
- CF1101D GCD Counting(数学,树的直径)
几个月的坑终于补了…… 题目链接:CF原网 洛谷 题目大意:一棵 $n$ 个点的树,每个点有点权 $a_i$.一条路径的长度定义为该路径经过的点数.一条路径的权值定义为该路径经过所有点的点权的 GC ...
- CF 954H Path Counting
H. Path Counting time limit per test 5 seconds memory limit per test 256 megabytes input standard in ...
- CodeForces - 1101D:GCD Counting (树分治)
You are given a tree consisting of n vertices. A number is written on each vertex; the number on ver ...
- CF#338D. GCD Table
传送门 简单的中国剩余定理练习. 首先行数一定是$lcm$,然后只要确定最小的列数就能判定解合不合法了. 我们可以得到线性模方程组: $y \equiv 0 \pmod{a_1}$ $y+1 \equ ...
随机推荐
- js对input框的可编辑属性设置
添加disabled属性 $('#areaSelect').attr("disabled",true); $('#areaSelect').attr("disabled& ...
- CentOS7配置gradle,或配置maven
借鉴博客: https://www.cnblogs.com/imyalost/p/8746527.html 特简单,不多说了,自己看 1.下载gradle4.6版本:wget https://down ...
- 转《service worker在移动端H5项目的应用》
1. PWA和Service Worker的关系 PWA (Progressive Web Apps) 不是一项技术,也不是一个框架,我们可以把她理解为一种模式,一种通过应用一些技术将 Web App ...
- 如何使用nodejs快速搭建本地服务器
1.首先要安装好node,js 2.以下有安装包下载的链接:这里的安装包是.msi,如果要其他的,可以到菜鸟教程上去找 32 位安装包下载地址 : https://nodejs.org/dist/v4 ...
- Failed to bind properties under 'spring.datasource' to javax.sql.DataSource
这是我的配置文件 # 国际化配置文件(包名.基础名) spring.messages.basename=i18n.login server.tomcat.uri-encoding=UTF- sprin ...
- 报错:ch.qos.logback.core.joran.spi.JoranException
项目中使用了maven. 1.找到本地仓库,删除ch文件夹 2.对项目执行maven install 3.在更新下项目maven update
- git reset 版本回退的三种用法总结
git reset (–mixed) HEAD~1 回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响) git reset –soft ...
- Nginx 如何减轻高流量下的压力
L:102 比如 Nginx 缓存服务出现问题(比如新增服务器等造成缓存失效) 所有资源请求直接穿透上游服务器 造成上游服务器压力倍增 特别热点文件 都是访问同个文件 以下可以减轻上述问题 第二种方 ...
- django CBV视图源码分析
典型FBV视图例子 url路由系统 from django.conf.urls import url from django.contrib import admin from luffycity.v ...
- Node.js 安装与管理
一.node安装 Windows下,官网下载 Node.js 安装包,运行安装即可, 安装成功后,可查看版本号 node -v 二.npm npm 是 node 包管理工具,随同node一起安装,安装 ...