Weights Assignment For Tree Edges
题目:
(我的题目很长,你忍一下……)




题目分析:
这道题目的体面比较复杂,先是讲了一下树是怎样的一个结构,并且告诉我们在这里,他是以什么样的一种方式描述一棵树的,就是通过描述每个节点的父节点是哪个(b数组),然后告诉我们要安排边权,使得树中的每个节点到根的距离都能如同p数组那样进行排序,然后叫我们输出对应每个点和他的父结点之间的边权即可。
题解:
首先这道题是一道非常经典的让我们判断能否构造一个数组,使得题干条件成立,如果不能输出-1;
既然这样的话,我们肯定要先分析什么情况下会输出-1,那么就是一个节点到根的距离反而比它父节点到根的距离更近,我们知道这是不可能的,因为在这里所有的边权都只可能是正数,所以我们就要去看是否存在这种情况,但是根据b数组我们只能知道这个节点的父结点是什么,并不能很快的查找到这个点的所有子节点,所以我们这里就要运用我们在Acwing上学到的邻接表来存储,这样就可以很快遍历当前节点的所有子节点,这一步是在输入b数组的时候同步进行的。但是光找到子节点没有用,我们不能用O(1)的时间复杂度直接找到这个子节点的位置,所以我们要对p数组进行修改,使得P[i]代表的是i是离根最近的第P[i]个点,这样就能根据P数组直接得到每个点的位置;
只要能经过上一步的检查,那么到这里的就一定能构造出一个对应的距离,我们这样考虑,每个到根的距离的差只差1,比如0,1,2,3……n。 所以我们定义一个maxd表示当前到根的最大的距离,然后下一个点到根的距离就是maxd,那么这个点到父结点的边权就是maxd + 1 - dist[father],所以我们还要定义一个dist数组存储当前节点到根的距离,但是这样的话,我们遍历的顺序就应该是从近到远,所以那个P数组我们要换个形式使之保留。 这里整个的思路就是设定每个点到根节点的距离,然后进行赋值。
从题目中,我们可以看出,这是一道非常经典的用空间换时间的思路,我开了很多的数组,就是为了在为了找到它时能用O(1)的效率找到;
代码:Submission #153732004 - Codeforces
Weights Assignment For Tree Edges的更多相关文章
- atcoder NIKKEI Programming Contest 2019 E - Weights on Vertices and Edges
题目链接:Weights on Vertices and Edges 题目大意:有一个\(n\)个点\(m\)条边的无向图,点有点权,边有边权,问至少删去多少条边使得对于剩下的每一条边,它所在的联通块 ...
- AtCoder NIKKEI Programming Contest 2019 E. Weights on Vertices and Edges (并查集)
题目链接:https://atcoder.jp/contests/nikkei2019-qual/tasks/nikkei2019_qual_e 题意:给出一个 n 个点 m 条边的无向图,每个点和每 ...
- [atAGC052B]Tree Edges XOR
定义两点的距离$d(x,y)$为$x$到$y$路径上边权异或和,则两棵树相同当且仅当$\forall 1\le i\le n$,$d(1,i)$相同 新建一个节点0,连边$(0,1)$,初始权值为0, ...
- CSU 1663: Tree(树链剖分)
1663: Tree Time Limit: 5 Sec Memory Limit: 128 MB Submit: 26 Solved: 11 [Submit][id=1663"> ...
- codeforces 342E :Xenia and Tree
Description Xenia the programmer has a tree consisting of n nodes. We will consider the tree nodes i ...
- CodeForces 682C Alyona and the Tree (树+dfs)
Alyona and the Tree 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/C Description Alyona ...
- cf202-div 1-B - Apple Tree:搜索,数论,树的遍历
http://codeforces.com/contest/348/problem/B B. Apple Tree time limit per test 2 seconds memory l ...
- Codeforces Round #358 (Div. 2) C. Alyona and the Tree 水题
C. Alyona and the Tree 题目连接: http://www.codeforces.com/contest/682/problem/C Description Alyona deci ...
- Codeforces Round #358 (Div. 2) C. Alyona and the Tree dfs
C. Alyona and the Tree time limit per test 1 second memory limit per test 256 megabytes input standa ...
随机推荐
- 更新或添加properties文件(保留存在的properties文件的原有格式)
转载: https://www.cnblogs.com/wangzhisdu/p/7815549.html import java.io.BufferedWriter; import java.io. ...
- T12焊台控制器制作教程 | T12烙铁 | PID增量式算法恒温控制 | 运算放大器-热电偶电压采集 | OLED屏幕显示-SPI通信 | 旋转编码器EC11用户操作
前言 购买T12烙铁的相关配件已经1年多了,期间也尝试了一些开源的T12控制器,但都没有成功,要么是配套资料少,要么是英文的,其中51和arduino的居多,STM32的较少.求人不如求己,索性自己开 ...
- Linux部署Nacos
此处演示Nacos在Linux(CentOS7)环境中单机版部署,此处演示1.3.0版本. 一.官网下载压缩包 https://github.com/alibaba/nacos/releases 二. ...
- 正则-Java注释代码
今天写了个匹配java中常见的注释,记录一下,以备后用,使用条件将行两边的空格trim掉. (^\/\*.*)|(^\/\/.*)|(^\*.*)
- Spring由哪些模块组成?
以下是Spring 框架的基本模块: Core module Bean module Context module Expression Language module JDBC module ORM ...
- 在Spring AOP 中,关注点和横切关注的区别是什么?
关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能. 横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,比如日志,安全和数据传输,几乎应用的每个模块 ...
- 用TLS/SSL保证EMQ的网络传输安全
作为基于现代密码学公钥算法的安全协议,TLS/SSL能在计算机通讯网络上保证传输安全,EMQ的MQTT broker支持TLS,也可以用这种方式来确保传输安全. 参考官网:https://www.em ...
- 转:master公式(主方法)
master公式(也称主方法)是利用分治策略来解决问题经常使用的时间复杂度的分析方法,(补充:分治策略的递归解法还有两个常用的方法叫做代入法和递归树法),众所众知,分治策略中使用递归来求解问题分为三步 ...
- 关于 DispatcherServlet.properties 文件
1.文件位置 2.文件内容 3.文件作用 前端控制器会从 DispatcherServlet.properties 文件中加载 HandlerMapping(处理器映射器).HandlerAdapte ...
- 03. Pandas数据结构
03. Pandas数据结构 Series DataFrame 从DataFrame中查询出Series 1. Series Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一 ...