10.23

P8315

题面

教训,先看数据范围。

考虑直接容斥,枚举不合法的方案数。对于一种选择,其答案是 \(k^{n-c}\) 其中 \(c\) 是边数,然后容斥就完了。

P3732

题面

数据随机是这题的突破口,考虑只维护前后 \(40\) 位的值。我们习惯性离线下来,按照 \(r\) 排序,然后扫描线。考虑在走 trie 的时候刷新这个深度的最后达成时间,判断就直接判断这个桶就好了。

细节:用后缀 \(\max\) 处理一下桶,这样就是最优的。

P9575

题面 原作者: 喵仔牛奶

这是一道构造,考虑分类讨论。

  • \(n\) 为偶数,取 \(x=1\),对半分即可。
  • \(n\) 不为偶数,且有奇数个偶数。取 \(x=2\),贪心拿偶数,然后拿奇数凑到一半即可。
  • \(n\) 不为偶数,且有偶数个偶数。不论取什么 \(x\) 都有奇数个奇数,无解。

P5522

题面

用了一个复杂度不优但是很简单的做法。

考虑从数据范围下手,我们可以直接给每个位置开 \(3\) 棵线段树,然后就是区间求和。

具体来说:

  1. 如果又有 \(0\)\(1\),那么无解。
  2. 否则如果所有位置都是 ?,那么答案 \(\times 2\)

修改就是单点修改。

用树状数组,加两个 inline 就能过了。

P4395

题面

挺好一道题。

这是一个构造,考虑在出现 \(x\) 下的最优最少点的树是多少,设这个函数为 \(f(x)\) .

考虑构造一排儿子,要把这一排加上,那么就要用之前的所有树放上去,那么就有:

\[f(x)=\sum_{i=1}^{x-1}f(i)+1 \]

所以所需要的颜色就是 \(\log_2n+1\) 的,直接 dp即可。

P2860

题面

最开始以为有向边,以为不可做 😦

首先缩个环,然后考虑树上的答案。

考虑一会后,我们发现叶子两两连就可以了,所以 \(ans=\frac{(leaf+1)}{2}\).

P4312

题面

发现是一道假在线题,考虑离线。

发现这个东西最终一定形成森林,所以直接树剖 \(+\) dsu 就好了。

P9808

题面

\(dis\) 贡献板子。考虑这样:

\[dis(x,y)=dep_x+dep_y-2dep_{lca(x,y)} \]

那么原来的式子在每个点需要添加的东西就是:

\[(i-1)\cdot dep_x+sum_{dep}-\sum_{j=1}^{i-1}2dep_{lca(x,y)} \]

考虑快速计算中间这玩意,我们有个 trick 来源于这里

具体来说就是直接跳到根,其中每一个点贡献次数 \(+w_{edge_i}\),然后这玩意的答案就是到根链上和。

P9555

题面

这种东西属于抽象数据合并。考虑怎么合并两个区间。我们发现篮子里的数量种类很少,而且起始方案确定,最终方案也就确定了,而且这个东西直接就能合并,所以直接维护前后篮子状态的线段树判断就好了。

放到树上有很多细节:

  1. 路径上你要先树剖找到所有区间然后再合并。
  2. 你要用两个栈维护正反两种东西,最后合并。

挺难写的。

P6805

题面

又tm读错题了,要保证所有道路扫完。

考虑思考每条边的贡献。如果这条边需要走多少遍。

  1. 只有奇数个个儿子,那就走一遍。
  2. 只有偶数个儿子,那就走两遍。

考虑修改带来的变化,就是链上奇偶翻转,考虑树剖维护。用一个重链前缀数组维护和就好了(具体实现可以只用一个数组)。时间复杂度可以做到 \(O(n\log n)\) 不知道为啥都写的双 \(\log\) 的。

posted @ 2025-10-23 21:52  NeeDna  阅读(5)  评论(0)    收藏  举报