2025.3.24西安集训dp做题记录

管道取珠

转化为有两个人在取珠,求相同的方案数。然后简单 dp。

CF1874F

备注:太难了想了 1.5h 后看了题解,看题解还是很懵,又想了很久才会。

首先对于不好处理的限制考虑容斥。现在考虑一个区间 \([l,r]\) 必须对应 \(p[l,r]\),如何统计数量。

可以发现一个小性质:所有的区间可以被一些不交或包含的区间等价替代,可以考虑任意两个有交区间,简单推理可发现结论。

所以这些区间贡献构成树形结构,考虑区间 dp 解决。设 \(f_{l,r}\) 表示区间答案,\(g_{l,r,x}\) 表示区间中有 \(x\) 个元素未确定的方案数。有:

\[f_{l,r}=\sum_x g_{l,r,x}\cdot x! \]

因为剩下的数可以随机排列,然后转移 g 的时候就枚举中间点即可,时间复杂度 \(O(n^4)\)

潜入行动

看起来就挺板子的题目,树上背包直接做,然后 T 了一个点。注意养成好习惯,每次枚举完子树再累加 sz。

Subsegments with Large Sums

看到要求恰好 k 的限制可以想到 wqs 二分。然后考虑横纵坐标,以划分段数为横轴、满足条件段数为纵轴,里面用 dp 求一下,发现又可以 wqs 二分,于是就二分套二分做完了。

CF1930G

非常套路地 dp 值域,然后考虑贡献的来源。首先只有比它小的点才能做贡献,然后将这些点分类。

第一部分是从根节点到其的链上,当满足链上最大值为本身时可以从链的上一个最大值转移。第二部分是由链连出去的一些子树,可以发现这些树存在优先级,先后顺序由子树最大值决定,证明简单。考虑从小的值向大的值贡献答案,但是有的点会被挡住,所以只有一段区间中的点才有贡献,于是用树状数组维护转移,时间复杂度 \(O(n\log n)\)

posted @ 2025-03-24 20:31  Lyrella  阅读(10)  评论(0)    收藏  举报