2023-12

2023-12

*Ucup Stage 11:Naning D.Red Black Tree(QOJ 7736)

好题。

Description

给你一颗树,每个节点有一个颜色(红或黑),定义一棵树是好的指这棵树中的所有节点到他子树中的叶子节点路径上的黑色节点数都相等。对每个 \(1 \le i \le n\) ,求要使以 \(i\) 为子树是好的,至少要改变多少个节点的颜色。

Solution

首先做一个很简单的 dp:设 \(dp_{u, x}\) 表示以 \(u\) 为根的子树合法, 从 \(u\) 开始到叶子路径上一共有 \(x\) 个黑色节点。设 \(g_{u, i}(i \in \{0, 1\})\) 表示 \(u\) 变成红/黑的代价。

\[dp_{u, x} = \min_{i \in \{0, 1\}} \{g_{u, i} + dp_{v, x - i}\} \]

因为\(g\)是凸函数,做完 \((\min, +)\)卷积后 \(f\) 下凸。

考虑维护 \(f_{u, 0}\)\(f\) 的差分序列。

ARC166D Interval Counts

Description

给定数轴上 \(n\) 个点 \(x_1, \cdots, x_n\), 同时有 \(y_1, \cdots, y_n\)。 现在需要你使用若干条线段 \([L_1, R_1], \cdots, [L_k, R_k]\) 覆盖数轴,使得 对于 \(1 \le i \le n\) , \(x_i\) 都被恰好覆盖 \(y_i\) 次。 最大化 \(\min \{R_i - L_i\}\)

Solution

考虑二分,设二分的长度为 \(len\), 问题变成了我们能否只用长度 \(\ge mid\) 的线段满足题目要求。考虑构造 \(y\) 的差分序列 \(c_i = y_i - y_{i - 1}\), 每次操作等价于让满足 \(x_j - x_i \ge mid\)\(c_i \leftarrow c_i -1, c_{j + 1} \leftarrow c_{j + 1} + 1\), 目标是让 \(c\) 全变为0。 (注:\(x_{n + 1} = \infty, c_{n + 1} = -\infty\))然后就对于每个正的 \(c_i\),贪心找到离他最近的符合要求且 \(c_{j + 1} < 0\)\(j\), 模拟一下做完了,这个可以 two-pointers, 复杂度 \(\mathcal{O}(n \log{n})\)

*ARC141D Non-divisible Set

智商题。

Description

给定 \(N\) 个数的集合,对于每个数 \(A_i\) 求出是否存在一个大小为 \(M\) 的包含 \(A_i\) 的子集是好的。一个集合 \(S\) 是好的当且仅当不存在两个数 \(a,b\in S,a\neq b,a|b\)
\(\color{red}M \leq N \leq 2M, 1 \le A_i \le 2M\)

Solution

注意到 \(1 \le A_i \le 2M\), 对于所有 \(1 \sim 2M\) 的奇数 \(k\), 类似于 \(k \times 2^i\) 的数在每个集合最多出现一个。 而题目要求选 \(M\) 个数,所以对于每个奇数 \(k\), \(k \times 2^i\) 在集合中都恰好要出现一个, 设出现的是 \(k \times 2^{p_k}\)。 你考虑求出他的上下界,判定一下就做完了。

*ARC121F Logical Operations on Tree

Description

给一棵 \(n\) 个节点的树,你可以给每个点定一个 \(0/1\) 的权值,每条边定一种运算 \(\texttt{OR}/\texttt{AND}\), 求存在某种顺序能将树缩成一个 \(1\) 点的填的方案数。

Solution

感觉这题挺有意思,其实就是一个性质要注意到,就是先 \(\texttt{AND}\)\(\texttt{OR}\) 一定不劣。考虑咋证明它,我们先将 \(\texttt{OR}\) 边全部删掉,现在只剩下一堆联通块,不难发现如果当前有全是 \(1\) 的联通块的话,就合法了。那么我们只要证明,在没有全 \(1\) 连通块的时候,它也不能通过其他合并顺序使得最后合法。这个其实非常 naive ,不难发现 \(\texttt{OR}\) 操作本质上就是把它对应的两个点 \(\texttt{OR}\) 一下,然后再把对应两个连通块合并。因为当前没有全 \(1\) 连通块,所以这两个连通块 \(1\) 的个数 \(\ge 2\), 而 \(\texttt{OR}\) 操作顶多干掉一个 \(1\) ,所以没救。
问题变成了每条边 \(\texttt{AND}/\texttt{OR}\)\(\texttt{OR}\) 划分的连通块必须要有一个全 \(1\) 。 这个其实能做,不过反着做好像更容易,非常 naive 的树上 dp 计数,就不细讲了。

**AGC058C Planar Tree

吊题。这个我实在不会讲,建议翻翻官方题解 / cz_yxx 题解, 告辞。

*ARC164E Segment-Tree Optimization

Description

给你序列长度 \(n\), 你要自己搞一个广义线段树(就是划分的点需要你自己定),要求他给你的 \(Q\) 个询问所访问到的最深节点深度 \(d\) 最小,在保证 \(d\) 最小同时求出深度 \(d\) 节点被访问到的最小总次数 \(c\)(注意,这个弱智题的访问有点不同,如果它的父节点和询问有交叉或包含,往下的时候即使自己和询问一点关系没有还是要被访问,很弱智)。

\(n \le 4000, Q \le 10^5\)

Solution

感觉挺厉害一题。

第一想法肯定是按照询问的端点来划分阿,然后发现求 \(d\) 这个很弱智,假设我们划分出了 \(m\) 个区间,那 \(d\) 其实就是第一个 \(2^d \ge m\) 的。我们发现在 \(m < 2^d\) 时,并不是所有区间都要放在最后一层,有一些区间可以跑上面不用贡献答案。相当于有一些区间逃到 \(d - 1\) 层了,但是 \(d - 1\) 层只有 \(2^{d - 1}\) 个位置阿,所以 dp 一下最优解。怎么两个区间下放在 \(d\) 层的贡献?设这个区间的分界点为 \(mid \sim mid + 1\),那根据我们划分的性质那就是 \(cl_{mid + 1} + cr_{mid}\) , 其中\(cl, cr\) 表示左右端点的询问区间个数。

但我感觉有点小问题阿,这 tm 为啥只能往上一层,真没啥别的牛逼情况了?

ABC302Ex Ball Collector

Description

沙比题不想写。

Solution

其实就是一个很套路的子问题然后套一个 dfs:

\(n\) 个位置,每个位置有编号为 \(A_i, B_i\) 两个小球,你从每个位置上拿一个求最多能拿几种小球。

这个其实很好做,你考虑建无向边 \((A_i, B_i)\) , 表示这条边上只能选一种编号的球,然后,你考虑对,每个联通,块,求解,发现一个联通,块 \(G\) 的答案一定是 点数和边数的, \(\min\), 然后,就,做完,了!

搬到树上就是套,个,可撤,销并查集,阿,就,做完,了。这么弱,智。
其实子问题是绿题。喝喝。

**ABC241Ex Card Deck Score

Description

题太牛逼了不想写。

Solution

一眼生成函数,呃呃

\[[x^m]\prod_{i = 1} ^ n \sum_{j = 0} ^ {b_i} (a_ix) ^ j \]

哦我擦,\(m\) 大小这么逆天,咋做额呃呃。
先瞎拆一点,

\[\begin{aligned} &= [x^m]\prod_{i = 1} ^ n \dfrac{1 - (a_ix)^{b_i + 1}}{1-a_ix}\\ \end{aligned} \]

分子这种二项式相乘么,\(n \le 16\) 随便做了。
分母比较厉害的,厉害的东西开始了:

(部分分式展开法):设系数 \((\lambda_1, \lambda_2, \cdots, \lambda_n)\)

\[\prod_{i = 1} ^ n \dfrac{1}{1 - a_ix} = \sum_{i = 1} ^ n \dfrac{\lambda_i}{1 - a_ix} \\ \sum_{i = 1} ^ n \lambda_i \prod_{j \neq i} (1 - a_jx) = 1\\ \]

\(x_i = \frac{1}{a_i}\), 考虑将 \(x_1, \cdots, x_n\) 分别带入上面,得到

\[\lambda_i \prod_{j \neq i} \left(1 - \dfrac{a_j}{a_i}\right) = 1 \\ \lambda_i = \prod_{j \neq i} \left(1 - \dfrac{a_j}{a_i}\right)^{-1} \]

\(\lambda\) \(\mathcal{O}(n^2)\) 求出来之后,分母的系数我们就能随便做了,和前面的系数合并一下就行,做完了。

posted @ 2023-12-09 15:05  luyiming123  阅读(25)  评论(0编辑  收藏  举报