tree是一种常用的数据结构用来模拟真实物理世界里树的层级结构.每个tree有一个根(root)节点和指向其他节点的叶子(leaf)节点.从graph的角度看,tree也可以看作是有N个节点和N-1个边的有向无环图. Binary tree是一个最典型的树结构.顾名思义,二分数的每个节点最多有两个children,分别叫左叶子节点与右叶子节点.下面的内容可以让你学习到: 理解tree的概念以及binary tree 熟悉不同的遍历方法 使用递归来解决二分树相关的问题 A. 遍历一棵树 Pre-o…
题目:http://codeforces.com/contest/949/problem/D 有二分答案的思路. 如果二分了一个答案,首先可知越靠中间的应该大约越容易满足,因为方便把别的房间的人聚集过来:所以如果二分了答案为 f ,可以认为合法的房间是除了前 f 个和后 f 个的剩下的房间. 但边缘房间自己能满足时也不用专门往中间跑,但一旦要跑,方向一定是向中间的:所以可以用指针判断: 可以认为 f 是合法房间的一个界限:指针走的时候累计一下已经有多少人,当又满足一个房间时,如果指针在界限 f…
好题,当时想了半个小时,我往图论方面去想了,把出现过的字符串当场点,然后相互连边,那么就构成了一个三角形,一个大于三个点的连通分量里有以下结论:度为二的点可能是track,度为大于二的点一定不是track,当一个点连接一个可能是track的点和一个可能是artist的点,那么这个点就可能是ablum.然后我就卡在这里了,怎么求连通分量,怎么判断一个点一定是artist.还有形成的树的深度不能超过三,等等问题. 其实这样想不对,借助之前做A Lot of Joy 的思想,改下一思路,判断连通改成统…
http://codeforces.com/contest/1088 A:Ehab and another construction problem 输出 2 和 n(偶数的话)或者 2 和 n-1(奇数的话)就行了.n==1的时候非法. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int x; int main(…