集训总结(三)

9.6

P6847 Magic Tree

考虑树形 \(dp\),设 \(f_{u,i}\) 表示在 \(i\) 时刻时断掉 \(fa_u\)\(u\) 之间的边的最大代价,则有转移:

1.\(f_u,i=\sum_{v \in son_u} f_{v,i}\)
2.\(f_{u,i}=max(f_{u,i},\sum_{v \in son_u} f_{v,d_u}+w_u)\) \((i \ge d_u)\)

直接暴力转移是 \(O(nk^2)\) 的,考虑优化。

发现每次转移时,对一个点做贡献的点只有它的儿子,所以我们在计算完 \(u\) 的贡献后,直接合并到它的 \(fa\) 处。很容易能想到线段树合并。

对于第一种转移是容易的,考虑如何进行第二种转移。一个思路是维护每个区间的最大值,将整个区间拆成几个最大值小于 \(max\) 的区间,然后进行区间推平。这样的复杂度是正确的,因为随着 \(i\) 的增大,限制越来越宽松,所以 \(f\) 值是单调不降的,所以我们只需要推平一段区间。

为了保证复杂度正确,使用标记永久化线段树。

P13980 数列分块入门 5

饭堂了,写篇博客记录一下。

分块不知道为啥寄了一个点,所以改用线段树。

可以发现,一个数最多开 \(logn\) 次根号就会变成 \(1\),变成 \(1\) 后就不会再变了,所以我们线段树记录区间和、区间最大值,维护一个 \(pos_i\) 表示以 \(i\) 为左端点,最远的 \(max \le 1\) 的区间右端点。修改时若 \(maxn \le 1\),则不修改,直接跳过;否则暴力修改。

P3760 异或和

考试 \(T1\),早上考的时候是个紫,考完就成蓝了。

我是螳臂,怒冲 \(4h\) \(T1\),冲过后发现 \(T3\) 是自己两个月前当作例题讲的原......

我们按位考虑,枚举 \(2\) 进制下的每一位,判断区间能为当前位贡献 \(1\) 个数的奇偶性,如果是奇数个,答案 \(2^k\),否则不管。维护两棵权值树状数组,一棵记录当前位为 \(1\) 的,一棵记录当前位为 \(0\) 的。

如果当前扫描到的 \(s_i\) 的二进制第 \(k\) 位为 \(1\),那么对这一位的答案有贡献的只有那些第 \(k\) 位为\(1\) 且第 \(k\) 位向右的数比 \(s_i\)\(k\) 位向右的数大的或者第 \(k\) 位为 \(0\) 且第 \(k\) 位向右的数不比 \(s_i\)\(k\) 位向右的数大的。
如果第 \(k\) 位为 \(0\) 的话,如果后面再比 \(s_i\) 大的话,\(s_i\)\(k\) 位的 \(1\) 就需要借给低一位的了,所以后面必须不比 \(s_i\) 大。

9.7

我承认我对计数 \(dp\) 没有任何天赋,所以我要开始严肃加训了。

P1450 硬币购物

直接跑多重背包肯定会 \(T\),所以我们考虑容斥 + 完全背包。先用完全背包预处理出每种价值的方案数,然后考虑容斥。对于第 \(i\) 种物品,它的限制是 \(d_i\),所以我们减去不合法的方案数,也就是减去 \(f_{c_i*(d_i+1)}\)

但是这样会算重,所以我们要加上算重的考虑两种物品的贡献,再减去考虑三种物品的贡献,再加上考虑四种物品的贡献即可。

P10592 isn

首先考虑弱化版,如果没有“删到 \(A\) 非降后停止”这个条件,该如何做?

考虑 \(dp\),设 \(f_{i,j}\) 表示前 \(i\) 个数选 \(j\) 个,并强制选 \(a_i\) ,能够组成的不降序列的个数。则有转移:

\[f_{i,j}=\sum_{k=1}^{i-1}[a_k \le a_i]f_{k,j-1} \]

初始时 \(f_{i,1}=1\)。然后令 \(g_i\) 表示长度为 \(i\) 的不降序列的个数,则有 \(g_i=\sum_{k=1}^i f_{k,i}\)

此时转移是 \(O(n^3)\) 的,但是可以发现转移方程可以用树状数组优化,于是就变成了 \(O(n^2logn)\)

考虑加上限制该如何做。发现不合法的情况为一个非降序列由另一个非降序列删去一个数形成,于是我们可以容斥掉这种情况。因为非降序列形成前,其他数删去的顺序是任意的,所以总方案是 \(\sum_{i=1}^n g_i \times (n-i)!\),减去不合法的方案数为 \(\sum_{i=1}^{n-1} g_i \times (n-i)! \times (i+1)\)

P14005 棋盘游戏

赛时唐了,没发现规律,都不知道原理就稀里糊涂过了这个题。。。

发现对于某个 \(2 \times 3\) 的矩形,我们在其内部进行两次不同的翻转会形成一个 \(1 \times 2\) 的矩形,然后我们将原来的大矩形向下平移 \(1\) 个单位再重复操作便会形成一个 \(2 \times 2\) 的矩形,此时随意进行一次操作一或操作二,我们便会发现,总共只翻转了一个点的颜色。

然后此结论可以运用到任何位置,所以有结论:任意一个满足题目要求范围的坐标均可。

SP11470 To The Moon

很久很久以前的一个作业题,不知为啥咕到现在。话说这题不该紫吧。

可持久化线段树板子题,如果用 pushdown 会爆,所以标记永久化就可以了。

9.8

树套树专题。

P4175 网络管理

考虑将询问路径 \((u,v)\) 转化为 \((u,rt)+(v,rt)-(lca(u,v),rt)-(fa(lca(u,v)),rt)\),用树状数组套权值线段树维护每个点到根路径的信息,然后这就成了树套树板子了。

写了一天树套树,发现全是没脑子的题,不知道写啥了。。。

posted @ 2025-09-06 18:19  leizepromax  阅读(5)  评论(0)    收藏  举报