uoj problem 11 ydc的大树】的更多相关文章

题目大意: 给定一颗黑白树.允许删除一个白点.最大化删点后无法与删点前距自己最远的黑点连通的黑点个数.并求出方案数. 题解: 这道题很棒棒啊. 一开始想了一个做法,要用LCT去搞,特别麻烦而且还是\(O(nlogn)\)的 % 了vfk的题解才知道这道题居然是\(O(n)\)的... 我们有一个结论:一个点到其最远点的路径一定经过树的直径的重心. 因为所有直径的重心一定相同,所以我们知道重心最多有两个,并且一定连续. 所以我们将重心提至根,以新的根重新建树.那么我们现在就可以发现我们要切断的所有…
uoj problem 10 题目大意: 给定任务若干,每个任务在\(t_i\)收到,需要\(s_i\)秒去完成,优先级为\(p_i\) 你采用如下策略: 每一秒开始时,先收到所有在该秒出现的任务,然后取出当前优先级最高的任务,一直工作这个任务到下一秒,该任务的需要的时间-1s,如此循环进行,直到任务全部完成. 现在有一任务的优先级未知,但知道其被完成的时间点.确定一个合法的优先级.并计算出所有任务完成的时间 题解: 其实vfk的题解很详细. 那我就写一写我的理解吧. 首先拿到这道题我们就会去想…
Problem 11 # Problem_11.py """ In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 4…
[UTR #1]ydc的大树 全网唯一一篇题解我看不懂 所以说一下我的O(nlogn)做法: 以1号点为根节点 一个黑点如果有多个相邻的节点出去都能找到最远的黑点,那么这个黑点就是无敌的 所以考虑每个黑点x的最远距离和最远点是否仅在一个“方向” 然后这个方向的一些连续白点割掉可以使得x不高兴 1.如果都在一个方向,假设是x的子树,那就是这个子树最远黑点们的lca到x路径上的任意白点割掉,都可以使得x不高兴 2.如果都在往父亲的方向,找到最浅的点p,使得每个最远黑点到x的路径都经过p,p到x的路径…
题目描述: ydc有一棵n个结点的黑白相间的大树,从1到n编号. 这棵黑白树中有m个黑点,其它都是白点. 对于一个黑点我们定义他的好朋友为离他最远的黑点.如果有多个黑点离它最远那么都是它的好朋友.两点间的距离定义为两点之间的最短路的长度. 现在你要摧毁一个白点. 摧毁后有一些黑点会不高兴.一个黑点不高兴当且仅当他不能到达任何一个在摧毁那个白点前的好朋友. 请你最大化不高兴的黑点数. 解题报告: 套路题啊,直接提黑点重心到根,那么这样就可以保证每一个黑点到其最远的黑点一定经过根节点了,那么就可以开…
题面传送门 Emmm--这题似乎做法挺多的,那就提供一个想起来写起来都不太困难的做法吧. 首先不难想到一个时间复杂度 \(\mathcal O(n^2)\) 的做法:对于每个黑点我们以它为根求出离它距离最远的点集 \(S\),那么一个白点能够摧毁这个黑点当且仅当这个白点在黑点到点集 \(S\) 中的点的 \(\text{LCA}\) 的路径上.这样我们就可以求出所有白点的答案了. 考虑优化这个过程,注意"以每个点为根"一脸可用换根 \(dp\) 优化的亚子,因此考虑换根 \(dp\),…
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a containe…
题目大意: 给定一个长度为2n的括号序列.定义一个关于区间[l,r]的翻转操作为位置平移对调. 即翻转")))()("可以得到"()()))((" 用不超过n次翻转操作使给出的序列变为合法的序列.\(n \leq 100000\) 题解: 因为给出了n次翻转操作的机会. 如果我们考虑构造出"(((((())))))"的合法的括号序列 很容易得到这样的策略: 从左到右依次检查左半部分,如果出现了右括号,就向右找到第一个出现的左括号然后交换两括号,使…
题目: DZY开始有 \(n\) 个点,现在他对这 \(n\) 个点进行了 \(m\) 次操作,对于第 \(i\) 个操作(从 \(1\) 开始编号)有可能的三种情况: Add a b: 表示在 \(a\) 与 \(b\) 之间连了一条长度为 \(i\) 的边(注意,\(i\)是操作编号).保证 \(1 \leq a, b \leq n\). Delete k: 表示删除了当前图中边权最大的k条边.保证 \(k\) 一定不会比当前图中边的条数多. Return: 表示撤销第 \(i-1\) 次操…
题目: 小O是一个热爱短代码的选手.在缩代码方面,他是一位身经百战的老手.世界各地的OJ上,很多题的最短解答排行榜都有他的身影.这令他感到十分愉悦. 最近,他突然发现,很多时候自己的程序明明看起来比别人的更短,实际代码量却更长.这令他感到很费解.经过一番研究,原来是因为他每一行的缩进都全是由空格组成的,大量的空格让代码量随之增大. 现在设小O有一份 \(n\) 行的代码,第 \(i\) 行有 \(a_i\) 个空格作为缩进. 为解决这一问题,小O要给自己文本编辑器设定一个正整数的默认TAB宽度…