El pueblo unido jamas serà vencido!

[模拟]20220330

T1

一个比较奇怪的树形 DP。

首先看到 \(n \le 3000\) 复杂度就很显然应该是 \(n^2\) 的。
然后考虑设计 DP 状态,令 \(f_{u,v}\) 表示 \(u\) 最近中转点为 \(v\)\(u\) 子树内的最小代价。
最后取 \(\min_{i = 1}^{n} f_{1,i}\)
但是赛时没想到怎么转移,但是其实还是比较容易想的。

另一个做法就是因为放关键点有代价,有点像树上背包的感觉,向这方面想,维护 \(f_{u,k}\) 表示 \(u\) 子树内有 \(k\) 个未匹配关键点的最小代价,\(g_{u,v}\) 表示 \(u\) 子树内所有关键点已经被覆盖且强制其他节点从 \(u\) 转移时匹配的点为 \(v\) 的最小代价,不是很好懂。

T2

线性代数。
之前集训的时候见过,于是写的当时讲的 \(n^{3/4}\) 的做法,然后得了 \(60\)
差分一下,再综合一下杜教筛的求和法,改一下就 \(100\) 了。

T3

一眼线段树,然后正解确实是线段树。
贡献的计算规则很诡异,于是一直在找规律,只找到了按每种长度区间贡献个数考虑,最后找规律失败了导致啥也没维护出来。
std 写的是动态 DP,很屑。

总结

一会想 T1 一会想 T3 的结果就是一道都切不了。

posted @ 2022-03-30 15:40  AstatineAi  阅读(30)  评论(0编辑  收藏  举报