博客
关于我
联赛模拟测试20 B. Walk (建图)
阅读量:428 次
发布时间:2019-03-06

本文共 1361 字,大约阅读时间需要 4 分钟。

题目描述

分析

一条边只会在枚举它因子作为答案时才有用

所以,我们考虑从 \(1\) 到最大值枚举答案 \(w\),把所有倍数是 \(w\) 的边连起来
在形成的森林中跑一个直径
这样相当于把每条边分成因子个数条边
注意,你不能一开始就建好图然后在枚举时打标记,这样你走的边会变多
时间复杂度 \(O(n\times \sqrt{n})\)

代码

#include
#include
#include
#include
#include
#include
#define rg registerinline int read(){ rg int x=0,fh=1; rg char ch=getchar(); while(ch<'0' || ch>'9'){ if(ch=='-') fh=-1; ch=getchar(); } while(ch>='0' && ch<='9'){ x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*fh;}const int maxn=1e6+5;int n,h[maxn],tot=1,mmax;struct asd{ int to,nxt;}b[maxn];struct jie{ int zb,yb; jie(){} jie(int aa,int bb){ zb=aa,yb=bb; }};void ad(int aa,int bb){ b[tot].to=bb; b[tot].nxt=h[aa]; h[aa]=tot++;}std::vector
g[maxn];int ans[maxn],dis[maxn],sta[maxn],tp,vis[maxn],tim,maxdis,jl,jll;void dfs(int now,int fa){ vis[now]=tim; for(rg int i=h[now];i!=-1;i=b[i].nxt){ rg int u=b[i].to; if(u==fa) continue; dis[u]=dis[now]+1; if(dis[u]>maxdis){ maxdis=dis[u]; jl=u; } dfs(u,now); }}int main(){ freopen("walk.in","r",stdin); freopen("walk.out","w",stdout); memset(h,-1,sizeof(h)); n=read(); rg int aa,bb,cc; for(rg int i=1;i
mmax) mmax=cc; } for(rg int i=1;i<=mmax;i++){ tp=0; tot=1; tim++; for(rg int j=i;j<=mmax;j+=i){ for(rg int k=0;k
=1;i--){ ans[i]=std::max(ans[i],ans[i+1]); } for(rg int i=1;i<=n;i++){ printf("%d\n",ans[i]); } return 0;}

转载地址:http://kgpyz.baihongyu.com/

你可能感兴趣的文章
ExtJs学习笔记
查看>>
(转)在ASP.NET 中实现单点登录(利用Cache, 将用户信息保存在服务器缓存中)
查看>>
《Spring Boot 实战纪实》之如何攥写需求文档
查看>>
形象革命——穿搭
查看>>
【Azure 应用服务】在Azure Funciton中使用Powershell脚本函数,需要存储一些变量值如何解决?
查看>>
RabbitMQ核心概念篇
查看>>
权限管理系统系列之序言
查看>>
6. SOFAJRaft源码分析— 透过RheaKV看线性一致性读
查看>>
深入理解Kafka必知必会(2)
查看>>
Java程序员学习Go指南(终)
查看>>
Go语言实现布谷鸟过滤器
查看>>
Mysql多数据库备份
查看>>
微信小程序setData子元素
查看>>
github: Permission denied (publickey). 问题解决方法
查看>>
Docker常用操作
查看>>
spring+mybatis+springMVC框架配置多数据源
查看>>
查看已经开放的端口,查看和清理tomcat日志文件
查看>>
Centos7查看外网ip,yum安装的curl无法正常使用
查看>>
ORA-00600: internal error code, arguments: [kole_t2u], [34]
查看>>
TX锁处理
查看>>