随笔分类 -  题解

1 2 3 4 5 ··· 9 下一页
摘要:考虑设 $f(i)$ 表示从低到高第 $i$ 位的进位情况,$0$ 表示不进位,$1$ 表示进位。 分类讨论一下: $f(i-1)=f(i)=1$,那么 $a,b$ 这一位有三种情况 $(1,1),(1,0),(0,1)$。 $f(i-1)=f(i)=0$,那么 $a,b$ 这一位有三种情况 $(0 阅读全文
posted @ 2022-11-25 10:16 Kobe303 阅读(39) 评论(0) 推荐(0)
摘要:首先建出一棵 01-Trie,容易发现选择一个字符串之后,它的子树和到根节点的链上的节点都不能再选了。 仔细观察一下,发现剩下的树实际上是若干个满二叉树,那么要求出这些满二叉树的 SG 函数。 对于一棵深度为 $x$ 的满二叉树(令根节点深度为 $0$),观察一下,发现: 若取根节点,则整棵树没了, 阅读全文
posted @ 2022-11-25 09:30 Kobe303 阅读(24) 评论(0) 推荐(0)
摘要:非常神的贪心,先要发现以下两个性质: 要花钱收买的一些人,那么肯定是在一开始就收买他们。 按照 $m$ 升序排序,那么处理 $m=x$ 时,$m=1\sim x-1$ 的人一定都投了票,不管是贿赂还是跟风。 性质一不难理解,而性质二基于性质一,在一开始收买完人后就像连锁反应一样,$m$ 从小到大开始 阅读全文
posted @ 2022-11-25 08:13 Kobe303 阅读(34) 评论(0) 推荐(0)
摘要:T1: 容易发现每种药品之间互不影响,对每种药品分别计算,对于它所涉及到的区间开个 vector 存下来,离散化之后差分,然后前缀和,数出只有它一个线段覆盖的段即可。 时间复杂度 $\mathcal O(\sum k\log\sum k+n+m)$。 Code: #include <bits/std 阅读全文
posted @ 2022-11-24 21:28 Kobe303 阅读(89) 评论(0) 推荐(0)
摘要:T2: 先判 $1,n$ 有连边的情况,也就是说明最短路一定是 $1$ 直接走到 $n$。特判掉 $k=1,n=2$ 的情况,这是无解的。那么如果 $k\ge2$ 就令 $1,n$ 都为 $U$,其余随便分配,否则令 $1,n$ 都为 $P$,其余随便分配。 否则不妨假设给 $1$ 分配 $U$,给 阅读全文
posted @ 2022-11-23 18:41 Kobe303 阅读(102) 评论(0) 推荐(0)
摘要:稍微手玩一下可以发现: 若 $y\ge 2x$,那么 $y-x\gt y%x$ 若 $y\lt 2x$,那么 $y-x=y%x$ $y\oplus x\ge y-x$ 于是不难发现只有 $y\lt 2x$ 时才可能有贡献。 即 $x,y$ 位数相同,最高位都为 $1$。 那么问题变成 $y\oplu 阅读全文
posted @ 2022-11-20 20:44 Kobe303 阅读(33) 评论(0) 推荐(0)
摘要:令 $dis(i,j)$ 表示点 $i,j$ 之间的曼哈顿距离。 如果钦定两个点 $i,j$ 染同一种颜色,那么就可以发现这些东西: 不能存在点 $k$ 与 $i,j$ 不同色,并且满足 $dis(i,k)\lt dis(i,j)$ 或 $dis(j,k)\lt dis(i,j)$。 对于所有点 $ 阅读全文
posted @ 2022-11-20 15:43 Kobe303 阅读(38) 评论(0) 推荐(0)
摘要:将原题中的操作删除变成染色,即: 给出一棵树,每次随机等概率选择一未染黑的点,将它及其子树染黑。问期望多少次操作可以将树全部染黑。 首先由于期望的线性性,对每个节点分别考虑其期望被选中的次数。 假设当前在考虑点 $u$,那么只用考虑 $1\sim u$ 这条链上的点。 由于每个节点被选中的次数只有 阅读全文
posted @ 2022-11-20 08:55 Kobe303 阅读(33) 评论(0) 推荐(0)
摘要:首先由于期望的线性性,考虑对每个点分别计算它的期望操作次数。 然后设当前考虑的点为 $u$,那么只用关注根节点到 $u$ 的链上的点。 对这条链上的操作满足以下两个性质: 只会对链上的坏点染色。 在这条链上所有点变成黑色,即 $u$ 变成好点之前,一直都会对这条链进行操作。 然后就是整道题中最难以理 阅读全文
posted @ 2022-11-19 22:13 Kobe303 阅读(56) 评论(0) 推荐(0)
摘要:先发现以下两个性质: 对于所有段,它们的异或和就是所有数的异或和。 由于每段的异或和都一样,设为 $d$,并设 $s$ 为所有数的异或和,总共分成了 $x$ 段,则有 $s=[x\bmod2=1]d$。 设 $\left{A\right}$ 的前缀异或和为 $\left{pre\right}$。 分 阅读全文
posted @ 2022-11-18 20:00 Kobe303 阅读(65) 评论(0) 推荐(0)
摘要:首先不难发现,字符串具体是啥对答案没有影响。 于是有两种做法,第一种我个人认为更好理解,就是由于长度相同的字符串,用相同操作次数产生它们的方案数是一样的,则设计 $f(i,j)$ 表示用 $i$ 次操作产生长度为 $j$ 的字符串的方案数,则有 加入 $0/1$,$f(i+1,j+1)\gets f 阅读全文
posted @ 2022-11-17 20:36 Kobe303 阅读(30) 评论(0) 推荐(0)
摘要:设 $f(S)$ 表示将字符串 $S$ 拆分成 $T$ 的前缀相连,最少需要划分成几段。 需要注意到一个性质,每个字符串被拆分时,最后一个子串应尽可能长。换句话说,若字符串 $A,B$ 都是可以转移的位置,且 $A$ 是 $B$ 的前缀,则必有 $f(A)\lt f(B)$,从 $A$ 转移一定最优 阅读全文
posted @ 2022-11-17 08:48 Kobe303 阅读(43) 评论(0) 推荐(0)
摘要:先考虑暴力的 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 阅读(32) 评论(0) 推荐(0)
摘要:考虑二分最小值,设当前二分出的值为 $x$。 那么把区间中 $\ge x$ 的变成 $1$,其余变为 $0$,那么就是查询区间内最长全 $1$ 区间长度是否 $\ge k$。 这个类似于区间最大子段和,可以用线段树轻松维护。 而发现每个 $x$ 都可能被用到,于是换成主席树即可。 时间复杂度 $\m 阅读全文
posted @ 2022-11-16 21:09 Kobe303 阅读(41) 评论(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 阅读(40) 评论(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 阅读(88) 评论(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 阅读(57) 评论(0) 推荐(0)
摘要:考虑时光倒流。 由于 A 操作只会给两个活跃的点连边,所以可以忽略,倒过来相当于没有删边操作。 然后只剩下加边,加活跃点,两种操作。每次暴力 DFS 即可。 时间复杂度 $\mathcal O(n+Q)$。 Code: #include <bits/stdc++.h> using namespace 阅读全文
posted @ 2022-11-15 19:58 Kobe303 阅读(35) 评论(0) 推荐(0)
摘要:设当前枚举到第 $i$ 位,$x$ 为 $i$ 前面期望连续 $1$ 的个数。 令 $a_i=x,b_i=x^2,c_i=x^3$。 $a$ 很好转移, $$a_i=(a_{i-1}+1)\times p_i$$ $b$ 的转移考虑 $(x+1)^2=x^2+2x+1$,则有 $$b_i=(b_{i 阅读全文
posted @ 2022-11-14 19:12 Kobe303 阅读(41) 评论(0) 推荐(0)
摘要:先对 $k$ 进行二分,将最值问题转化成判定问题。 判定一个 $k$ 是否合法时,贪心去考虑,一个节点下面的若干条链在合并时,一条链肯定和另一条使它合并后恰好满足长度限制的链合并最优。因此我们用 multiset 来进行维护,一条长度为 $len$ 的链,去查询最小的长度 $\ge k-len$ 的 阅读全文
posted @ 2022-11-14 08:18 Kobe303 阅读(35) 评论(0) 推荐(0)

1 2 3 4 5 ··· 9 下一页