【填坑】loj6159. 「美团 CodeM 初赛 Round A」最长树链
水一水
枚举各个质数,把是这个数倍数的点留下,跑直径,没了
#include <bits/stdc++.h>
using namespace std;
int h,t,n,p,q,M,N;
int dis[],lis[],fir[],nex[],to[];
vector<int> po[];
map<int,int> ma;
bitset<> vis,ok,v;
void add(int p,int q)
{
to[++M]=q;nex[M]=fir[p];fir[p]=M;
}
int bfs(int now)
{
dis[now]=;vis[now]=;int lo=,id=;
v.reset();v[now]=;
for(lis[h=t=]=now;h<=t;h++)
for(int i=fir[lis[h]];i;i=nex[i])
if(ok[to[i]] && !v[to[i]])
{
lis[++t]=to[i];
vis[to[i]]=;v[to[i]]=;
dis[to[i]]=dis[lis[h]]+;
if(dis[to[i]]>lo) lo=dis[to[i]],id=to[i];
}
return id;
}
int main()
{
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%d%d",&p,&q),add(p,q),add(q,p);
for(int i=;i<=n;i++)
{
scanf("%d",&t);
for(int j=;j<=sqrt(t);j++)
{
if(t%j==)
po[ma[j]?ma[j]:(ma[j]=++N)].push_back(i);
while(t%j==)
t/=j;
}
if(t>) po[ma[t]?ma[t]:(ma[t]=++N)].push_back(i);
}
int L=;
for(int i=;i<=N;i++)
{
ok.reset();vis.reset();
for(int j=;j<po[i].size();j++)
ok[po[i][j]]=;//,printf("%d ",po[i][j]);
// puts("");
for(int j=;j<po[i].size();j++)
if(!vis[po[i][j]])
L=max(L,dis[bfs(bfs(po[i][j]))]);
}
printf("%d\n",L);
return ;
}
【填坑】loj6159. 「美团 CodeM 初赛 Round A」最长树链的更多相关文章
- 「美团 CodeM 初赛 Round A」最长树链
题目描述 Mr. Walker 最近在研究树,尤其是最长树链问题.现在树中的每个点都有一个值,他想在树中找出最长的链,使得这条链上对应点的值的最大公约数不等于1.请求出这条最长的树链的长度. 输入格式 ...
- #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队
#6164. 「美团 CodeM 初赛 Round A」数列互质 思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 , 但是还要处理有多少 ...
- loj #6177. 「美团 CodeM 初赛 Round B」送外卖2 状压dp floyd
LINK:#6177.美团 送外卖2 一道比较传统的状压dp题目. 完成任务 需要知道自己在哪 已经完成的任务集合 自己已经接到的任务集合. 考虑这个dp记录什么 由于存在时间的限制 考虑记录最短时间 ...
- 【loj6177】「美团 CodeM 初赛 Round B」送外卖2 Floyd+状压dp
题目描述 一张$n$个点$m$条边的有向图,通过每条边需要消耗时间,初始为$0$时刻,可以在某个点停留.有$q$个任务,每个任务要求在$l_i$或以后时刻到$s_i$接受任务,并在$r_i$或以前时刻 ...
- Loj #6164. 「美团 CodeM 初赛 Round A」数列互质
link : https://loj.ac/problem/6164 莫队傻题,直接容斥做. #include<bits/stdc++.h> #define maxn 100005 #de ...
- LiberOJ#6178. 「美团 CodeM 初赛 Round B」景区路线规划 概率DP
题意 游乐园被描述成一张 n 个点,m 条边的无向图(无重边,无自环).每个点代表一个娱乐项目,第 i 个娱乐项目需要耗费 ci 分钟的时间,会让小 y 和妹子的开心度分别增加 h1i ,h2i ,他 ...
- 「美团 CodeM 初赛 Round A」试题泛做
最长树链 树形DP.我们发现gcd是多少其实并不重要,只要不是1就好了,此外只要有一个公共的质数就好了.计f[i][j]表示i子树内含有j因子的最长链是多少.因为一个数的不同的质因子个数是log级别的 ...
- loj6177 「美团 CodeM 初赛 Round B」送外卖2 最短路+状压dp
题目传送门 https://loj.ac/problem/6177 题解 一直不知道允不允许这样的情况:取了第一的任务的货物后前往配送的时候,顺路取了第二个货物. 然后发现如果不可以这样的话,那么原题 ...
- 题解 [美团 CodeM 初赛 Round B]景区路线规划
有个影响因素k,显然不能高斯消元 n和k都不大,可以直接\(O(nk)\)跑DP 然而带上时间这一影响因素后的转移颇为难写,我从6点直接调到9点最后还是只能dfs爆搜骗了55pts 考场上推方程一定要 ...
随机推荐
- 集训Day3
被疯狂造谣+请家长 但生活还得继续 ...今天的题口胡一下吧明天码 PKUSC2018 D1T1 对于x:若x不翻,则x的一半到x的数都不能翻 若x翻,则x到2x都得翻 剩下随便安排 排列组合一下 P ...
- nginx开发笔记_ngx_hash源码解析
ngx_hash源码解析 ngx_hash是nginx中的hash表结构,具有以下特点: 静态结构,hash表创建后无法动态添加/删除KV. 采用连续存储方式解决碰撞问题.即出现碰撞的KV存放在连续地 ...
- 多线程之:java的CAS操作的相关信息
一:锁机制存在的性能问题? 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁(后面的章节还会谈到锁). 锁机制存在以下问题:(1)在多线程竞争下,加锁.释放锁会导 ...
- poj1135Domino Effect——最短路
题目:http://poj.org/problem?id=1135 先在图中跑一遍最短路,最后倒的牌可能是dis值最大的点,也可能是在dis值最大的点所连的边上,尝试一下即可: 坑:n=1的时候输出点 ...
- 用linqpad来插入多条数据
其中Customers为数据库的某个表名, Custom自动被默认为单条记录的对象, 利用构造,InsertOnSubmit, 以及SubmitChanges实现插入数据. 注意:linqpad的la ...
- css3 实现运动动画 圆与椭圆
圆: html <div class="demo4"><div></div></div> css .demo4{ width: 20 ...
- Docker入门(二):安装/卸载
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- VS~通过IIS网站启用"域名"调试
在我们开发网站时,对某些信息进行序列化时,通常使用session,cookies,nosql等技术,而为了安全,我们在服务器上很多情况都做了防止盗链的设计,这给本机调试带来了不便,因为,本机都是以lo ...
- css 实现垂直水平居中常用方法
html <div class="outer"> <div class="inner"></div> </div> ...
- ai技术体系