省选模拟104 题解

A. 签到题

把每个点向它右侧比他大的第一个点之间连边,如果没有那么向 \(root\) 连边。

那么可以构成一棵树。

特判一些情况之后,可以认为问题就是:

1.给某节点和它的所有儿子节点权值加上一个值。

2.询问一条路径的权值和。

首先考虑如果只询问单点的维护方法,其实就是打一个标记表示给整个儿子集合都加上了若干权值。

每次只要统计单点的修改加上父亲标记即可。

所以把这个式子拆开,分别用线段树树剖维护就好了。

B. 蓝超巨星

对于左移的问题,可以枚举 \(S\) 这个串与 \(T\) 匹配的起始位置。

然后通过哈希判断字符相等的集合是否相等,哈希的方式自然还是 \(\sum \limits_{i=1}^n (i-lst_{s_i})*p^i\)

在哈希判断成立的条件下,只需要判断 \(26\) 个字符是否对位相等。

预处理出每个置换环的大小,每个字符置换到另一个字符需要用的最短时间。

然后发现对于每个字符,都要满足一个同余方程,其中模数不大于 \(26\)

对于左移的限制,还要满足一个同余方程,模数为 \(n\)

对于同余方程的合并,有一个简单的 \(O(\min{模数})\) 的做法,不断给一个变量加上较大的那个模数即可。

所以这题就可以 \(O(n26^2)\) 的做完了,如果对于每个环都只做一遍合并,复杂度可以做到 \(O(n26)\)

C. 秘密行动

容易发现每个质因子是独立的。

所以对于每个点的每个质因子可以看做选或不选两种事件。

二者分别有一个代价,二者不能共存。

对于 \(m\) 条边,其实就对应着恰好一个选。

这个问题可以用最小割解决,然后我刚开始的建图是这样的:

把每个点的每个质因子拆成两个点,分别表示选和不选,中间连上 \(\infty\) 边。

对于 \(m\) 条边,将 \(a\) 选向 \(b\) 不选连边,\(b\) 选向 \(a\) 不选连边。

然而这个做法是伪掉的,因为存在情况同时割掉了某个点选和不选两条边。

所以题解的建图是这样的:把这两个点合并成一个点,然后直接把边连起来。

posted @ 2020-05-23 22:09  skyh  阅读(258)  评论(3编辑  收藏  举报