Walk

题目描述

给定一棵 \(n\) 个节点的树,每条边的长度为 \(1\),同时有一个权值\(w\)。定义一条路径的权值为路径上所有边的权值的最大公约数。现在对于任意 \(i \in [1,n]\), 求树上所有长度为 \(i\) 的简单路径中权值最大的是多少。如果不存在长度为 \(i\) 的路径,则第 \(i\) 行输出 \(0\)。

输入输出格式

输入格式

第一行,一个整数 \(n\),表示树的大小。

接下来 \(n-1\) 行,每行三个整数 \(u,v,w\),表示 \(u,v\) 间存在一条权值为 \(w\) 的边。

输出格式

对于每种长度,输出一行,表示答案。

数据范围及约定

对于 \(30\%\)的数据, \(n \le 1000\)。

对于额外 \(30\%\)的数据, \(w \le 100\)。

对于 \(100\%\)的数据, \(n \le 4 \times 10^5\), \(1 \le u,v \le n\), \(w \le 10^6\)。


蜜汁题目。

思路:枚举每个可能的\(w\),建部分图。

连边要注意一下枚举的方法,不要用memset,像CDQ分治一样撤销。

约数个数大约是\(n^{\frac{3}{2}}\)的

复杂度同阶


Code:

#include <cstdio>
#include <vector>
const int N=4e5+10;
const int M=1e6+10;
int head[N],to[N<<1],Next[N<<1],sta[N<<1],cnt;
void add(int u,int v)
{
to[++cnt]=v,Next[cnt]=head[u],head[u]=cnt,sta[cnt]=u;
}
struct node{int u,v;}t;
int n,m,mxl,mx,used[N],ans[N];
std::vector <node> e[M];
int max(int x,int y){return x>y?x:y;}
int maxdis(int now,int fa)
{
used[now]=1;
int mx0=0,mx1=0,d;
for(int i=head[now];i;i=Next[i])
{
int v=to[i];
if(v!=fa)
{
d=maxdis(v,now);
if(d>=mx0) mx1=mx0,mx0=d;
else if(d>mx1) mx1=d;
}
}
mxl=mxl>mx0+mx1?mxl:mx0+mx1;
return mx0+1;
}
int main()
{
scanf("%d",&n);
for(int w,i=1;i<n;i++)
{
scanf("%d%d%d",&t.u,&t.v,&w);
e[w].push_back(t);
mx=mx>w?mx:w;
}
for(int i=1;i<=mx;i++)
{
for(int j=i;j<=mx;j+=i)
for(int k=0;k<e[j].size();k++)
add(e[j][k].u,e[j][k].v),add(e[j][k].v,e[j][k].u);
mxl=0;
for(int j=cnt;j;j--)
if(!used[sta[j]])
maxdis(sta[j],0);
ans[mxl]=i;
for(int j=1;j<=cnt;j++) used[sta[j]]=0,head[sta[j]]=0;
cnt=0;
}
for(int i=n;i;i--) ans[i]=max(ans[i+1],ans[i]);
for(int i=1;i<=n;i++) printf("%d\n",ans[i]);
return 0;
}

2018.10.11

Walk 解题报告的更多相关文章

  1. USACO Section2.2 Party Lamps 解题报告 【icedream61】

    lamps解题报告------------------------------------------------------------------------------------------- ...

  2. Codeforces Educational Round 92 赛后解题报告(A-G)

    Codeforces Educational Round 92 赛后解题报告 惨 huayucaiji 惨 A. LCM Problem 赛前:A题嘛,总归简单的咯 赛后:A题这种**题居然想了20m ...

  3. 【LeetCode】802. Find Eventual Safe States 解题报告(Python)

    [LeetCode]802. Find Eventual Safe States 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemi ...

  4. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  5. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  6. BZOJ 1051 最受欢迎的牛 解题报告

    题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4438  Solved: 2353[S ...

  7. 习题:codevs 2822 爱在心中 解题报告

    这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...

  8. 习题:codevs 1035 火车停留解题报告

    本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...

  9. 习题: codevs 2492 上帝造题的七分钟2 解题报告

    这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...

随机推荐

  1. ECSHOP和SHOPEX快递单号查询EMS插件V8.6专版

    发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...

  2. ubuntu 18 lnmp

    1安装Nginx sudo apt-get install nginx 2安装PHP sudo apt- php7.-fpm 3安装mysql sudo apt-get install mysql 启 ...

  3. Python基础03

    while循坏while属于条件判断 条件满足====>执行 条件不满足====>退出循环 whlie循环格式 while 条件 : 执行语句 while 1 == 1: print(&q ...

  4. JavaScript之原型 Prototype

    1.我们所创建的每一个函数,解析器都会向函数中添加一个属性prototype.这个属性对应着一个对象,这个对象就是我们所谓的原型对象.如果函索作为普通函数调用prototype没有任何作用. 当函数以 ...

  5. Spring 框架控制器类方法可用的参数与返回类型

    参数类型 Spring 有内建的 HTTP 消息转换器用于部分简单类型之间的转换 标准 Servlet 类型:HttpServletRequest, HttpServletResponse, Http ...

  6. python基础之进程间通信、进程池、协程

    进程间通信 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 进程队列queue 不同于线程queue,进程 ...

  7. 20145202马超《网络对抗》Exp4 恶意代码分析

    20145202马超<网络对抗>Exp4 恶意代码分析 1.实验后回答问题 (1)总结一下监控一个系统通常需要监控什么.用什么来监控. 虽然这次试验的软件很好用,我承认,但是他拖慢了电脑的 ...

  8. shell -- shift用法

    shift是Unix中非常有用的命令.可以使命令参数左移,从而使脚本程序中命令参数位置不变的情况下依次遍历所有参数.如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1. ...

  9. 管理员常用Windows PowerShell命令Top25

    即使Windows PowerShell已经由来已久,但很多管理员并不愿意主动熟悉PowerShell cmdlet命令行.随着微软扩展了PowerShell的功能,管理员应该对其功能及使用烂熟于心. ...

  10. Unity 3d C#和Javascript脚本互相调用 解决方案(非原创、整理资料,并经过实践得来)

    Unity 3d C#和Javascript脚本互相调用 解决方案 1.背景知识 脚本的编译过程分四步: 1. 编译所有 ”Standard Assets”, “Pro Standard Assets ...