1577 例题3 数字转换(LOJ10155) 约数计算 树上最长链(两次找最大深度)
总目录
在线测评地址(ybt)
在线测评地址(LOJ)
发现竟然读不懂题。努力静下来,再读题,总算有了眉目。
4→3→1→74的约数,不包括本身,1,2,约数和是1+2=3,
3的约数,不包括本身,1,约数和是1
7的约数,不包括本身,1,约数和是1
故可这样变换7->1->3->4
还是有些晕,还是要再找找其他可能变换途径。
进一步思考样例,找出7以内所有符合条件的数据
数值 约数和 符合题意 打上序号
1 1 否
2 1 是 1
3 1 是 2
4 1+2=3 是 3
5 1 是 4
6 1+2+3=6 否
7 1 是 5
选出符合题意的数,拼接在一起,发现是一棵树
进一步研究,发现最多变换步数是找这个树的最长链(红色部分)
该题的基本思路有了:
找出n范围内所有符合题意的数据及约束和。
将符合题意的数据拼接成树。
找出树的最长链(完全是笔者对立的思路:考虑从根节点开始,找出最大深度对应的点,再以该对应点为根节点,继续寻找最大深度,这次的最大深度,就是最长链的长度)。
该题,还需特判:
n==1时,输出0
在提交代码前,测试了几组数据
n==1输出0
n==2输出1
n==3输出2
n==4输出3
n==5输出3
n==6输出3
n==7输出3
发现没有问题,提交AC,代码如下:
ybt
通过
测试点 | 结果 | 内存 | 时间 |
测试点1 | 答案正确 | 616KB | 2MS |
测试点2 | 答案正确 | 628KB | 3MS |
测试点3 | 答案正确 | 620KB | 3MS |
测试点4 | 答案正确 | 624KB | 2MS |
测试点5 | 答案正确 | 640KB | 2MS |
测试点6 | 答案正确 | 800KB | 3MS |
测试点7 | 答案正确 | 848KB | 4MS |
测试点8 | 答案正确 | 1084KB | 8MS |
测试点9 | 答案正确 | 1596KB | 20MS |
测试点10 | 答案正确 | 1776KB | 26MS |
LOJ
#include <bits/stdc++.h>
#define maxn 50010
using namespace std;
struct node{int to,next;
}e[maxn<<1];
int head[maxn],tot,n,dep[maxn],mx,k;//dep[]记录深度(即离根的距离)
void add(int u,int v){tot++,e[tot].to=v,e[tot].next=head[u],head[u]=tot;
}
void init(){int x,y,z;scanf("%d",&n);for(x=2;x<=n;x++){y=1;for(z=2;z*z<=x;z++)if(x%z==0){y+=z;if(x/z!=z)y+=x/z; }if(y<x){ add(x,y),add(y,x);//无向图}}
}
void dfs(int u,int fa){int i,v;for(i=head[u];i;i=e[i].next){v=e[i].to;if(v==fa)continue;dep[v]=dep[u]+1;if(dep[v]>mx)mx=dep[v],k=v;dfs(v,u);}
}
int main(){init();if(n==1){//特判 printf("0\n");return 0;}dfs(1,-1);//第一遍找最大深度dep[k]=0;dfs(k,-1);//第二变找最大深度printf("%d\n",mx); return 0;
}
上述代码完全独立编写,没有参考任何资料。
该习得什么:
很关键的一点,建模,将数据连接成树.
约数计算.
树上最长链(两次找最大深度)
1577 例题3 数字转换(LOJ10155) 约数计算 树上最长链(两次找最大深度)相关推荐
- LOJ10155 一本通1577 数字转换 题解
目录 题面 题面分析 初读题面 深入分析 得出答案 树形DP做法 树形DP模板(仅供参考) 搜索做法 搜素BFS模板(仅供参考) 代码 题面 一本通 LOJ 题面分析 初读题面 如果一个数 xxx 的 ...
- loj10155:数字转换:树的直径问题
题目连接 树形DP专题 题目大意 一个数字n,求n以内的数字之间 "约数和关系" 的最长链: 约数和关系:一个数字 xxx 的约数和为 s[x]s[x]s[x] : 题目分析 由 ...
- $Loj10155$ 数字转换(求树的最长链) 树形$DP$
loj Description 如果一个数x的/约数和/y(不包括他本身)比他本身小,那么x可以变成y,y 也可以变成x.限定所有数字变换在不超过n的正整数范围内进行,求不断进行数字变换且不出现重复数 ...
- LOJ10155数字转换
题目描述 如果一个数 x 的约数和 y (不包括他本身)比他本身小,那么 x 可以变成 y,y 也可以变成 x.例如 4 可以变为 3,1 可以变为 7.限定所有数字变换在不超过 n 的正整数范围内进 ...
- loj10155 数字转换
题目描述 如果一个数 x的约数和 y (不包括他本身)比他本身小,那么 x 可以变成 y,y也可以变成 x.例如 4 可以变为 3,1 可以变为 7.限定所有数字变换在不超过 n 的正整数范围内进行, ...
- 如何更改计算机上面的图表形式,excel表格数据转换图形-怎么把EXCEL中的一组数字转换成图表形式...
谁会计算机啊,怎么把word里的表格数据转换成簇状... Excel表格转化成的方式如下: 1.打开EXCEL表格,数据,图表右侧下拉按钮,如图 2.出窗口中选择自己需要的图表,这里以曲面图为例,如图 ...
- python数字转换_python数字转换
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 方法一(普通方法):# -*- coding: utf-8 -*- #把数字转换 ...
- 数字转换 LibreOJ - 10155
数字转换 LibreOJ - 10155 题目 题解 AC代码 链接: 原题地址. 题目 如果一个数 x 的约数(不包括他本身)的和 y 比他本身小,那么 x 可以变成 y,y 也可以变成 x.例如 ...
- LOJ 10155 - 「一本通 5.2 例 3」数字转换
前言 从现在开始,这个博客要写一些题解了.起初,开这个博客只是好玩一样,没事就写写CSS.JS,然后把博客前端搞成了现在这个样子.以前博客只是偶尔记录一些东西,刷题也从来不记录,最近受一些学长的影响, ...
最新文章
- Java中关于进程和线程的理解
- java 手机号码归属地_【原创】Java实现手机号码归属地查询
- 安装qt5.9.5 windows环境
- Linux7添加syslog,请教linux下安装syslog的方法.是安装,不是配置
- javascript-自定义对象-数组形态对象-字典形态对象
- 异常:java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Workbook.getCellStyleAt
- python从语音生成语谱图
- 解决scrollView上subView下移20point问题的一种方式
- DataFrame创建程序利用字典创建dataframe对象
- 通达信版弘历软件指标_弘历指标源码:弘历软件主要功能是什么?选股精不精准?...
- Octotree插件
- .NET framework 4.0 安装失败的解决方案
- 800万像素摄像头,评估可以看到多远的红绿灯【1】?
- 计算机基础课件音乐,中考音乐资料电脑基础知识IT计算机专业资料-中考音乐资料.pdf...
- 黑白图片复原为彩色Picture Colorizer(图片着色器)
- 详讲全排列算法,及解决数字搭积木问题
- “知识共享”扎根中国,前景无量
- 使程序在Linux下后台运行
- Charles ——抓包工具安装与(Charles与浏览器)配置(Python爬虫必备神器)
- “浙”里别具风采——2018中国软件生态大会·杭州站
热门文章
- 石墨计算机,石墨文档电脑版
- qca9882 qca9880移植
- 加拿大量子计算机原理,量子计算机是基于什么原理而制造出来的?
- 华为大数据HCIP认证(HCIP-Big Data Developer V2.0) 考试大纲
- ios 内存深度优化_iOS内存优化
- 北大暑期学校学习总结
- 2019~ROS暑期学校~ROS Summer School in China~分享
- 正电子计算机全身显像(pet ct),正电子发射型计算机断层显像CT (PET-CT)避 免漏诊眼睑恶性肿瘤伴全身转移一例...
- 程序员口中常说的“组件”是什么?简洁易懂
- linux 安装插件报错:Loaded plugins: fastestmirror