dmy 集训 2.24

已严肃购入舞萌立直麻将!!集训完准备购入鸠鸟挂件和对立键帽。

QOJ7206 Triple

给定一棵树,求满足 \(dis(A,B)\le \max(dis(A,C),dis(B,C))\) 的有序三元组 \((A,B,C)\) 的数量。

考虑取点 \(u\) 使得 \(A,B,C\)\(u\) 的三个不同的子树中,于是:

\[\begin{aligned} &dis(A,B)\le \max(dis(A,C),dis(B,C))\\ \Leftrightarrow\ & dis(u,A)+dis(u,B) \le max(dis(u,A),dis(u,B))+dis(u,C)\\ \Leftrightarrow\ & dis(u,C)\ge min(dis(u,A),dis(u,B)) \end{aligned} \]

好烦啊!考虑正难则反,计算 \(dis(u,C)<\min(dis(u,A),dis(u,B))\) 的三元组个数。因为我们有一个根所以考虑点分治。

设分治中心是 \(u\),发现还是好难啊!每次要遍历整棵树复杂度会爆炸的!那每次不限定 \(u\) 一定是唯一交点就好了,对三个点所在的子树情况做大分讨:

  • 三个点在不同的子树:直接枚举 \(C\),预处理出各个深度的节点数量和每个子树各个深度的后缀和(显然数量不会超过树的大小),对着这个东西做分讨就能做出来了。
  • \(A,C\) 在同一颗子树(\(B,C\) 同理):枚举交点 \(X\)\(dis(X,C)\),要求 \(dis(X,A)>dis(X,C)\)\(dis(X,B)>dis(X,C)\),前者上长剖可做,后者把 \(dis(X,B)\) 换成 \(dis(u,B)+dis(u,X)\) 上后缀和即可。
  • \(A,B\) 在同一颗子树:枚举交点 \(X\)\(\min(dis(X,A),dis(X,B))\),类似 \(A,C\) 的做法,拆一下即可。

QOJ7236 Set Intersection

\(|A\cap B|\ge \frac{n}{2}\) 等价于 \(|A\cup B|-|A\cap B|\le n\)。对所有集合二元组求 \(|A\cup B|-|A\cap B|\) 的和,发现至多是 \(2n(\frac{n}{2}+1)\frac{n}{2}=n^2(\frac{n}{2}+1)<\frac{n(n+1)}{2}(n+2)\),所以一定有解。

但是暴力枚举二元组还是太慢了!我们取一个集合 \(A\),计算剩下所有的集合 \(B\)\(A\)\(|A\cup B|-|A\cap B|\),上面的式子两边乘上 \(\frac{2}{n}\) 发现一定有某个集合 \(A\) 可以根据抽屉原理分析出来有解,找到之后再枚举 \(B\),这样就可以 \(n^2\) 过了。

QOJ7258 Random Walk

随机游走,每次等概率往上下左右其中之一走一步,求所有行进序列中走过的格子数的总和。

依旧随机游走领域大神,还没细想,咕咕咕。

ARC150F Constant Sum Subsequence

看了一眼题解,大致约等于 Kingna 大神写的,以及大神乱搞有待学习。

QOJ17153 Deque Sort

发现后部分有序后缀每轮都在变长,所以一定能成功排序。考虑一次操作相当于什么。

相当于把所有的前缀最大值取出来排序再放到末尾,剩下的部分翻转放在前面。于是若干次排序之后序列一定形如 一段递减-一段没当过前缀最大值的数-一段递增。做了一轮之后递增段的末尾会扔进已经排序好的部分,取出的前缀最大值一定是第一个数和中间一段的一部分,递减加上前缀最大值放到后面当递增,递增翻转后放前面边递减,中间没取出来的不变。每个数最多从中间被取出一次,第一个数最多被取出 \(n\) 次,所以最终取得前缀最大值个数不超过 \(2n\)

发现区间翻转是平衡树的经典应用,上平衡树朴素实现即可。

QOJ17158 Palindromes

长为 \(N\) 的二元字符串 \(s\),满足长度为 \(a_1,\cdots,a_n\) 的前缀都是回文,求有多少种满足条件的 \(s\)

显然答案应该是 \(2\) 的幂次,等价于由回文关系确定哪些字符是相等的,求连通块数量。

考虑 border 理论,border 长度从大到小排序,可以分成 \(\log\) 个等差数列,从大到小考虑 \(a\),如果两个数相差超过两倍则没有没有限制,直接加边减连通块。如果相差不超过两倍,设为 \(x>y,x<2y\),将 \(x \to 2y-x\) 然后重新排序,类似辗转相除,直到处理完所有 \(a\)。每次 \(x\to 2y-x\) 至少把 \(x-y\) 减小一半,上个堆优化一下,时间复杂度至多双 \(\log\),分析一下可能可以更小,但用不着了。

QOJ17160 Multiset Variance

写不动了,先放个哥哥的题解,后面再来补。

posted @ 2026-02-24 17:56  Xuan_tmp  阅读(0)  评论(0)    收藏  举报