5 月都要完了怎么才开始写啊
山东二轮省级 D7T3
对于一棵树,在其上选择 \(k=0,1,2,\dots,\lfloor \frac{n}{2} \rfloor\) 对点,求所有点对的距离之和的最大值。
可以转化为找到这些点的重心,然后求重心到这些点的距离的和的最大值。
一个结论是,每次选取距离重心最远的点加入,然后移动重心,此时大小为偶数的点集就是答案。
可以转换为删点,每次删除最近的一个点。
还有一个结论是对所有点按 dfn 排序,重心一定在根节点到 dfn 序的中位数这条链上,考虑最浅的重心的 \(siz\) 一定大于 \(n/2\),然后可以用抽屉原理证明。
[JOIST 2024] Growing Vegetables is Fun 5
每步都很简单但是思维链长,卡在一步就寄寄了。
首先发现可以看成一个环,然后两段就可以直接分开做,最后取一个 max 就行。
然后又容易发现显然是两个序列都从大到小排序后进行匹配。
一开始尝试从双指针的角度思考,但是这个东西的答案很难直接维护。
容易想到二分答案,转换成可行性判定问题。如何判断一个半圆是否能匹配上 \(B/C\) 数组呢?
先给 \(B\) 排个序,然后 \(A_i\) 能匹配上的肯定是一个区间,记这个区间为 \([l_i,r_i]\),容易发现当半圆内小于等于 \(A_i\) 的数的个数在 \([l_i,r_i]\) 就一定是可行的,这个也是充要的。
似乎又卡住了?发现区间并不会变,会变的只是小于等于 \(A_i\) 的数的个数,考虑这个随半圆起始位置的变化值,容易发现是一条 \(45\) 度的斜线和一条横线拼在一起,所以可行的半圆起始位置也是一个区间,差分一下判断半圆内 \(n\) 个点是否全部可行即可。
[QOJ 18312] 礼物归位
怎么一下就翻到神秘题目了?
求将排列排好序的最少邻项交换次数,但是 \(1\) 和 \(n\) 也算邻项,输出方案。
首先容易想到换成一个数轴,每个位置可以换到所有终点 \(+xn,x\in Z\) 的位置。
有两个思考方向。
一个令 \(i\) 这个数的起始位置到终点的位移量为 \(u_i\),先猜一个 \(u_i\in [-n,n]\),又容易观察到 \(\sum u_i=0\),直接尝试最小化这个东西。
\(u_i\) 只有两种取值,我们一开始全部取正数的那一个,求出来当前的 \(\sum r_i\) 然后容易发现这个东西是可以被 \(n\) 整除的,然后呢就需要将 \(\frac{sum}{n}\) 个 \(r\) 变成 \(r-n\),最后直接输出方案。
但是感觉不太严谨,\(u\in [-n,n]\) 是比较好糊的,显然有不劣的调整。但是否能证明只要 \(\sum u_i=0\) 就一定可行?其实这个是错的,但是最优解是一定能被构造出来的,这个就有点阴间了。
毕竟一开始直接将所有 \(r\) 搞成正数了,不好直接从这个方面证。
接下来是第二个思路,你先记录忽略 \(1\) 和 \(n\) 可以交换的事情,求出来每个 \(i\) 的当前位移 \(u_i\),然后如果存在 \(u_i-u_j>n\) 就 \(u_i-n\to u_i\),\(u_j+n\to u_j\),容易发现这是更优的,也容易证明这个一定能搞出最优解,而且最优解的 \(u\) 构成的可重集是唯一的。
其实从这个方面可以证明一定是有构造方案的,小小画个图就出来了,第一个方法要详细证明可能也要转成第二种?不太清楚,没想的很深,只能说我对冒泡排序的开发还是太少了。
哦哦,其实求交换次数两种方法都容易 \(O(n)\),但是输出方案要 \(O(n^2)\),不太清楚意义在哪儿。
LG P7341 Phoenix
锣鼓乐赛也是有好题的。
这个东西的意思大致就是:
然后就可以推出来每个点出现的集合都是连续的一段区间这个结论了。
然后你是可以算出来区间两两交的大小的,如果区间不是包含关系则相对位置是确定的,直接用并查集合并,最后可以翻转带个 \(2\)。
然后对于包含关系就是在 \(1\times n\) 插入若干 \(1\times len_i\),就是 \(\binom{n-\sum (len_i-1)}{cnt}cnt!\)。

浙公网安备 33010602011771号