loading

Petrozavodsk Summer 2024. Day 1. Welcome Contest 补题记录

B. Bottles

中档计数题。然而我不会。

先把分母 \((e+p+w)!\) 去掉,那么分子就相当于每瓶药水都有编号的情况下合法的方案数。

看到每种毒的效果不同,如果钦定去世的时刻对于毒的计数会非常麻烦,考虑枚举第一次嗑药的时刻 \(i\),那么为了不被毒死,对于一些毒药,他有一段前缀不能填(对于毒药 \(j\) 前缀是 \(i-t-j\)),对于另一些毒药没有限制,设 \(q=i-t-1\),考虑从限制由紧往松填,由于毒和药都可以填在 \(i\) 之后,而毒可以填在 \(i\) 之前,而水能任意填,所以先填药,方案数为 \(A_{e+p+w-i}^{e-1}\),然后考虑有前缀限制的毒,推一推可以发现方案数都为 \(p+w-q\),剩下的毒方案数仍然是排列数,剩下的水的方案数自然是阶乘。

时间复杂度 \(O(n\log n)\)\(O(n)\)

E. Experiments With Divine Trees

不难发现可以通过操作将一个位置的币放到任意一个位置,所以我们可以任意排列币的顺序,而与初始局面无关,而我们只需要满足存在一颗子树使得子树大小等于 Au 或 Cu 的数量即可。枚举存在的子树大小,方案数自然是组合数。

然后再考虑减掉初始合法但是删掉叶子不合法的情况。这种情况下,相当于任意删掉一个叶子都不会合法,枚举金币的子树大小 \(i\)(为了方便,钦定 \(i\le \frac{n}{2}\),然后答案再乘一个 2 即可),那么该子树内的叶子必然全是铜币,子树外的叶子全是金币,而删掉子树内的任意一个叶子都找不到一个大小为 \(i\) 的子树,删掉子树外的任意一个叶子都找不到一个大小为 \(i-1\) 的子树。对于第一个条件,如果存在两个大小为 \(i\) 的子树,那么一定不满足条件(即合法);否则,如果其父亲只有该子树根节点一个儿子(即度数小于等于 2),那么向父亲扩展一位也能合法。对于第二个条件,如果存在一个大小为 \(i-1\) 的子树或存在另一个大小为 \(i\) 的子树,那么也一定合法;反之一定不合法。这里由于钦定了 \(i\le \frac{n}{2}\),避免讨论了很多其他情况。复杂度线性。

posted @ 2025-08-20 09:02  dcytrl  阅读(42)  评论(1)    收藏  举报