摘要: 传送门 不难发现,如果有解的话,一定存在一组解使得 \(a_i\) 恰为 \(n\) 的一个排列,而不一定有一组权值重复的解。 那么我们就尝试构造这样权值互不相同的解(从小到大赋值)。 如果我们设一个 \(d_i\),表示 \(i\) 号节点的子树中还有 \(d_i\) 个节点要对它贡献。 那么我们 阅读全文
posted @ 2020-06-14 16:21 Sangber 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 传送门 考虑 \(\text{DP}\),设 \(dp_{i, j, k, 0 / 1}\) 表示 \(dp\) 完前 \(i\) 位,补了 \(j\) 个偶数,\(k\) 个奇数,第 \(i\) 个位置填的是偶/奇(\(0/1\))的最小答案。 具体怎么转移看代码就好了,浅显易懂((( 参考代码: 阅读全文
posted @ 2020-06-14 16:13 Sangber 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 传送门 弱化版 考虑怎么从弱化版转化过来。 考虑通过树上路径修改和查询更新答案的本质——没错就是差分,我们把单点的信息搞到了一条路径上,那么我们就只要预先处理出每个点的基础贡献,然后就是在弱化版的基础上多乘一个整段区间的基础贡献和就好了。 那么这个单点的基础贡献是什么嘞?很简单,就是 \(dep_u 阅读全文
posted @ 2020-06-14 16:03 Sangber 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 传送门 这里要用到一个巧妙的想法:我们可以把加上 \(dep_u\) 转化为节点到根路径加和路径查询。 然后题目要求的是一段区间编号的点对某个点求 \(\text{LCA}\),可以考虑离线,然后我们把这道题转化成了树上路径加以及查询。 写个树剖就没了。 参考代码: #include <algori 阅读全文
posted @ 2020-06-14 15:41 Sangber 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 传送门 一个月前的一道考试题。。。 如果我们把这 \(2n\) 个位置看成点,每个人看成一条边,然后连出对应的图,不难发现这是一个基环树森林。当然对于有的点没有边相连的情况一定是无解。 那么一个人选择站位就是每一条边匹配一条它的端点,由于构造出来的图是一个基环树森林,也就是说其实只有环上的边才有的选 阅读全文
posted @ 2020-06-14 15:33 Sangber 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 传送门 不难发现如果我们确定了三个串中的其中两个,那么合法的第三个串就是唯一的。 那么我们考虑枚举两个串 \(i, j\),设对应的唯一合法第三串为 \(k\),那么我们就只要算 \(i\) 前面有几个 \(k\) 就好了。 这个东西开个 map 就好了。 参考代码: #include <iostr 阅读全文
posted @ 2020-06-14 15:17 Sangber 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 传送门 方便起见,我们把陷阱点作为这棵树的根节点,那么老鼠进入陷阱的过程就是从某一个节点往上跳父亲的过程。 注意到老鼠要尽可能的拖延时间,那么它肯定想走到子树里去。 思考发现,老鼠要是进入一棵子树,那么最后一定会被卡在这个子树的一个叶子上面。 而且不难发现老鼠一定是先自己往根走几步,然后再找个子树钻 阅读全文
posted @ 2020-06-14 15:13 Sangber 阅读(179) 评论(0) 推荐(0) 编辑