总目录

在线测评地址(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) 约数计算 树上最长链(两次找最大深度)相关推荐

  1. LOJ10155 一本通1577 数字转换 题解

    目录 题面 题面分析 初读题面 深入分析 得出答案 树形DP做法 树形DP模板(仅供参考) 搜索做法 搜素BFS模板(仅供参考) 代码 题面 一本通 LOJ 题面分析 初读题面 如果一个数 xxx 的 ...

  2. loj10155:数字转换:树的直径问题

    题目连接 树形DP专题 题目大意 一个数字n,求n以内的数字之间 "约数和关系" 的最长链: 约数和关系:一个数字 xxx 的约数和为 s[x]s[x]s[x] : 题目分析 由 ...

  3. $Loj10155$ 数字转换(求树的最长链) 树形$DP$

    loj Description 如果一个数x的/约数和/y(不包括他本身)比他本身小,那么x可以变成y,y 也可以变成x.限定所有数字变换在不超过n的正整数范围内进行,求不断进行数字变换且不出现重复数 ...

  4. LOJ10155数字转换

    题目描述 如果一个数 x 的约数和 y (不包括他本身)比他本身小,那么 x 可以变成 y,y 也可以变成 x.例如 4 可以变为 3,1 可以变为 7.限定所有数字变换在不超过 n 的正整数范围内进 ...

  5. loj10155 数字转换

    题目描述 如果一个数 x的约数和 y (不包括他本身)比他本身小,那么 x 可以变成 y,y也可以变成 x.例如 4 可以变为 3,1 可以变为 7.限定所有数字变换在不超过 n 的正整数范围内进行, ...

  6. 如何更改计算机上面的图表形式,excel表格数据转换图形-怎么把EXCEL中的一组数字转换成图表形式...

    谁会计算机啊,怎么把word里的表格数据转换成簇状... Excel表格转化成的方式如下: 1.打开EXCEL表格,数据,图表右侧下拉按钮,如图 2.出窗口中选择自己需要的图表,这里以曲面图为例,如图 ...

  7. python数字转换_python数字转换

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 方法一(普通方法):# -*- coding: utf-8 -*- #把数字转换 ...

  8. 数字转换 LibreOJ - 10155

    数字转换 LibreOJ - 10155 题目 题解 AC代码 链接: 原题地址. 题目 如果一个数 x 的约数(不包括他本身)的和 y 比他本身小,那么 x 可以变成 y,y 也可以变成 x.例如 ...

  9. LOJ 10155 - 「一本通 5.2 例 3」数字转换

    前言 从现在开始,这个博客要写一些题解了.起初,开这个博客只是好玩一样,没事就写写CSS.JS,然后把博客前端搞成了现在这个样子.以前博客只是偶尔记录一些东西,刷题也从来不记录,最近受一些学长的影响, ...

最新文章

  1. Java中关于进程和线程的理解
  2. java 手机号码归属地_【原创】Java实现手机号码归属地查询
  3. 安装qt5.9.5 windows环境
  4. Linux7添加syslog,请教linux下安装syslog的方法.是安装,不是配置
  5. javascript-自定义对象-数组形态对象-字典形态对象
  6. 异常:java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Workbook.getCellStyleAt
  7. python从语音生成语谱图
  8. 解决scrollView上subView下移20point问题的一种方式
  9. DataFrame创建程序利用字典创建dataframe对象
  10. 通达信版弘历软件指标_弘历指标源码:弘历软件主要功能是什么?选股精不精准?...
  11. Octotree插件
  12. .NET framework 4.0 安装失败的解决方案
  13. 800万像素摄像头,评估可以看到多远的红绿灯【1】?
  14. 计算机基础课件音乐,中考音乐资料电脑基础知识IT计算机专业资料-中考音乐资料.pdf...
  15. 黑白图片复原为彩色Picture Colorizer(图片着色器)
  16. 详讲全排列算法,及解决数字搭积木问题
  17. “知识共享”扎根中国,前景无量
  18. 使程序在Linux下后台运行
  19. Charles ——抓包工具安装与(Charles与浏览器)配置(Python爬虫必备神器)
  20. “浙”里别具风采——2018中国软件生态大会·杭州站

热门文章

  1. 石墨计算机,石墨文档电脑版
  2. qca9882 qca9880移植
  3. 加拿大量子计算机原理,量子计算机是基于什么原理而制造出来的?
  4. 华为大数据HCIP认证(HCIP-Big Data Developer V2.0) 考试大纲
  5. ios 内存深度优化_iOS内存优化
  6. 北大暑期学校学习总结
  7. 2019~ROS暑期学校~ROS Summer School in China~分享
  8. 正电子计算机全身显像(pet ct),正电子发射型计算机断层显像CT (PET-CT)避 免漏诊眼睑恶性肿瘤伴全身转移一例...
  9. 程序员口中常说的“组件”是什么?简洁易懂
  10. linux 安装插件报错:Loaded plugins: fastestmirror