摘要: 先考虑暴力的 DP,设 $f_i$ 表示到根节点距离恰好为 $i$ 的节点数量,则有 $$f_i=\sum_{j=1}^nf_{i-d_j}$$ 初值为 $f_0=1$,最终求的是 $\sum\limits_{i=0}^x f_i$。 注意到 $d_i\le100$,有很多相同的转移,于是记 $cn 阅读全文
posted @ 2022-11-16 22:25 Kobe303 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 考虑二分最小值,设当前二分出的值为 $x$。 那么把区间中 $\ge x$ 的变成 $1$,其余变为 $0$,那么就是查询区间内最长全 $1$ 区间长度是否 $\ge k$。 这个类似于区间最大子段和,可以用线段树轻松维护。 而发现每个 $x$ 都可能被用到,于是换成主席树即可。 时间复杂度 $\m 阅读全文
posted @ 2022-11-16 21:09 Kobe303 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 首先需要发现一个性质,每个串都是单调的,因为一个不单调的串一定可以拆分成若干个单调的串,并且不劣。 于是用 DP 处理出两个单调串相交的点分给哪个串即可。 具体的话就是设 $f_i$ 表示前 $i$ 个位置的答案,如果 $a_{i-2},a_{i-1},a_i$ 是单调的,那么 $$f_i=f_{i 阅读全文
posted @ 2022-11-16 19:46 Kobe303 阅读(17) 评论(0) 推荐(0) 编辑
摘要: E: 简单最短路,加一维表示当前是否翻转所有边的状态即可。 Code F: 先考虑简化版本,如果 $\left{A\right}$ 中没有 $0$,如何判定。 重新表述一下条件,令 $mn_i,mx_i$ 分别表示第 $i$ 行中的最小值和最大值,则有 $mn_1\le mx_1\le mn_2\l 阅读全文
posted @ 2022-11-16 18:58 Kobe303 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 每一个 bool 变量表示「$a_i$ 是否 $\ge j$」,由于 $a_i$ 必然 $\ge1$,所以总的变量数是 $n(k-1)$。 然后我们根据题目条件来建有向边,注意 2-sat 要满足对称性,所以下文中每一个条件的逆否命题都要建边: $a_i\le a_{i+1}$,等价于「对于所有的 阅读全文
posted @ 2022-11-16 07:07 Kobe303 阅读(37) 评论(0) 推荐(0) 编辑