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 ...
随机推荐
- .user.ini文件构成的PHP后门
.user.ini.它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法.我的nginx服务器全部是fpm/fastcgi,我的I ...
- 利用MSSQL getshell
此次复现使用的sql server 2000 和sql server 2008两个环境进行的 是在已知数据库密码的基础上进行的 0x01 MSSQL连接 连接MSSQL 2000 新建连接: 填写目的 ...
- 10ISE14.7和modelsim10.5关联编译库
今天准备在ISE14.7中调用PLL的IP核,搞一下时钟的分频和倍频.可在我做好pll的IP核后,我直接用ise生成了一个仿真文件,只需要修改下例化模块名和加一个时钟就行勒. 问题:但怎么在ISE14 ...
- Spark—GraphX编程指南
Spark系列面试题 Spark面试题(一) Spark面试题(二) Spark面试题(三) Spark面试题(四) Spark面试题(五)--数据倾斜调优 Spark面试题(六)--Spark资源调 ...
- 【flareon6】 overlong-通过动调改内存修改程序
程序分析 无壳,32位程序 运行后结果 程序比较简单一共三个函数 根据题目和运行结果可以看出来是a3太小了,没法完全解密密钥 解决该问题可以通过写脚本或动调解决 方法一:动调改内存 定位到a3入栈的位 ...
- 使用Spring通过什么方式访问Hibernate?
在Spring中有两种方式访问Hibernate: 控制反转 Hibernate Template和 Callback. 继承 HibernateDAOSupport提供一个AOP 拦截器.
- springboot服务引入外部jar包在windows运行正常,在linux环境上无法加载到引入jar包的类
一.问题描述 最近开发了一个springboot程序,需要依赖第三方jar包,这个jar包无法直接通过pom远程仓库下载,需要从自己本地引入,于是配置pom文件如下:将本地jar包引入工程,syste ...
- jQuery--基本过滤选择器
1.基本过滤选择器介绍 基本过滤器: :first 获取数组中第一个元素 :last 获取数组中最后一个 :eq(selector) 获取指定索引 :gt(index) 大于 ...
- 什么时候使用ConcurrentHashMap?
在问题2中我们看到ConcurrentHashMap被作为故障安全迭代器的一个实例,它允许完整的并发检索和更新.当有大量的并发更新时,ConcurrentHashMap此时可以被使用.这非常类似于Ha ...
- ADAS最全整理
为了实现「无人驾驶」的理想,各大整车厂和供应商目前正在开发「高级驾驶员辅助系统」(ADAS),随着 ADAS 慢慢被完善,车辆也在一步一步从 NHTSa 的 0 级过度到第 4 级,实现完全自动化.& ...