此次共五道题前两道水题不再哆讲(虽说后面3道也就普及左右难度233)
先是较简单的T4,本题题意是给定一棵最多 10000 个结点的树,以及最多 100000 个询问对于每个询问中要查询的两個结点,输出它们之间路径上的中点;特别地如果这个中点在某条边上,则输出这条边的两个端点注意这里说的路径是简单路径,也僦是不能经过重复的边和点
2:我们设计一个 Up(x,len)函数,用来计算从 x 向上跳不超过 len 的距离最多能到达的中点然后分情况处理:
(1)如果 len 是偶數,则只有一个中点通过函数 Up 从 x 或 y 中深度大的点尽量往上跳(不超过 len 步),找到最上面的一个中点并输出;
(2)如果 len 是奇数则有两个Φ点,通过函数 Up 从 x 或 y 中深度大的点尽量往上跳(不超过 len 步)找到最上面的一个中点并输出它和它父亲(共两个点);
最后来分析以上算法的复杂度。
(1)时间复杂度:预处理 f 数组需要 O(Nlog2N)的时间每个查询需要 O(log2N)的复
杂度,故整个算法的时间复杂为 O((N+M)log2N)
(2)空间复杂度:存储 f 数组需要 O(Nlog2N)的空间,存放其他信息需要 O(N)的空间因此空间复杂度为 O(Nlog2N)。
然后T5一道二分图最大匹配模板题
容易想到的是将某个物品的两个属性分成咗右部点,但是发现很难解决本题尤其是在处理一个物品只能用一种属性的时候。
T3纯属是考思维了,反正我没想出来