随笔分类 -  题解

1 2 3 4 5 ··· 9 下一页
摘要:考虑设 f(i) 表示从低到高第 i 位的进位情况,0 表示不进位,1 表示进位。 分类讨论一下: f(i1)=f(i)=1,那么 a,b 这一位有三种情况 (1,1),(1,0),(0,1)f(i1)=f(i)=0,那么 a,b 这一位有三种情况 $(0 阅读全文
posted @ 2022-11-25 10:16 Kobe303 阅读(21) 评论(0) 推荐(0) 编辑
摘要:首先建出一棵 01-Trie,容易发现选择一个字符串之后,它的子树和到根节点的链上的节点都不能再选了。 仔细观察一下,发现剩下的树实际上是若干个满二叉树,那么要求出这些满二叉树的 SG 函数。 对于一棵深度为 x 的满二叉树(令根节点深度为 0),观察一下,发现: 若取根节点,则整棵树没了, 阅读全文
posted @ 2022-11-25 09:30 Kobe303 阅读(15) 评论(0) 推荐(0) 编辑
摘要:非常神的贪心,先要发现以下两个性质: 要花钱收买的一些人,那么肯定是在一开始就收买他们。 按照 m 升序排序,那么处理 m=x 时,m=1x1 的人一定都投了票,不管是贿赂还是跟风。 性质一不难理解,而性质二基于性质一,在一开始收买完人后就像连锁反应一样,m 从小到大开始 阅读全文
posted @ 2022-11-25 08:13 Kobe303 阅读(19) 评论(0) 推荐(0) 编辑
摘要:T1: 容易发现每种药品之间互不影响,对每种药品分别计算,对于它所涉及到的区间开个 vector 存下来,离散化之后差分,然后前缀和,数出只有它一个线段覆盖的段即可。 时间复杂度 O(klogk+n+m)。 Code: #include <bits/std 阅读全文
posted @ 2022-11-24 21:28 Kobe303 阅读(63) 评论(0) 推荐(0) 编辑
摘要:T2: 先判 1,n 有连边的情况,也就是说明最短路一定是 1 直接走到 n。特判掉 k=1,n=2 的情况,这是无解的。那么如果 k2 就令 1,n 都为 U,其余随便分配,否则令 1,n 都为 P,其余随便分配。 否则不妨假设给 1 分配 U,给 阅读全文
posted @ 2022-11-23 18:41 Kobe303 阅读(72) 评论(0) 推荐(0) 编辑
摘要:稍微手玩一下可以发现: 若 y2x,那么 yx>yy<2x,那么 yx=y yxyx 于是不难发现只有 y<2x 时才可能有贡献。 即 x,y 位数相同,最高位都为 1。 那么问题变成 $y\oplu 阅读全文
posted @ 2022-11-20 20:44 Kobe303 阅读(19) 评论(0) 推荐(0) 编辑
摘要:令 dis(i,j) 表示点 i,j 之间的曼哈顿距离。 如果钦定两个点 i,j 染同一种颜色,那么就可以发现这些东西: 不能存在点 ki,j 不同色,并且满足 dis(i,k)<dis(i,j)dis(j,k)<dis(i,j)。 对于所有点 $ 阅读全文
posted @ 2022-11-20 15:43 Kobe303 阅读(21) 评论(0) 推荐(0) 编辑
摘要:将原题中的操作删除变成染色,即: 给出一棵树,每次随机等概率选择一未染黑的点,将它及其子树染黑。问期望多少次操作可以将树全部染黑。 首先由于期望的线性性,对每个节点分别考虑其期望被选中的次数。 假设当前在考虑点 u,那么只用考虑 1u 这条链上的点。 由于每个节点被选中的次数只有 阅读全文
posted @ 2022-11-20 08:55 Kobe303 阅读(19) 评论(0) 推荐(0) 编辑
摘要:首先由于期望的线性性,考虑对每个点分别计算它的期望操作次数。 然后设当前考虑的点为 u,那么只用关注根节点到 u 的链上的点。 对这条链上的操作满足以下两个性质: 只会对链上的坏点染色。 在这条链上所有点变成黑色,即 u 变成好点之前,一直都会对这条链进行操作。 然后就是整道题中最难以理 阅读全文
posted @ 2022-11-19 22:13 Kobe303 阅读(37) 评论(0) 推荐(0) 编辑
摘要:先发现以下两个性质: 对于所有段,它们的异或和就是所有数的异或和。 由于每段的异或和都一样,设为 d,并设 s 为所有数的异或和,总共分成了 x 段,则有 s=[xmod2=1]d。 设 \left{A\right} 的前缀异或和为 \left{pre\right}。 分 阅读全文
posted @ 2022-11-18 20:00 Kobe303 阅读(40) 评论(0) 推荐(0) 编辑
摘要:首先不难发现,字符串具体是啥对答案没有影响。 于是有两种做法,第一种我个人认为更好理解,就是由于长度相同的字符串,用相同操作次数产生它们的方案数是一样的,则设计 f(i,j) 表示用 i 次操作产生长度为 j 的字符串的方案数,则有 加入 0/1,$f(i+1,j+1)\gets f 阅读全文
posted @ 2022-11-17 20:36 Kobe303 阅读(16) 评论(0) 推荐(0) 编辑
摘要:设 f(S) 表示将字符串 S 拆分成 T 的前缀相连,最少需要划分成几段。 需要注意到一个性质,每个字符串被拆分时,最后一个子串应尽可能长。换句话说,若字符串 A,B 都是可以转移的位置,且 AB 的前缀,则必有 f(A)<f(B),从 A 转移一定最优 阅读全文
posted @ 2022-11-17 08:48 Kobe303 阅读(26) 评论(0) 推荐(0) 编辑
摘要:先考虑暴力的 DP,设 fi 表示到根节点距离恰好为 i 的节点数量,则有 fi=nj=1fidj
初值为 f0=1,最终求的是 xi=0fi。 注意到 di100,有很多相同的转移,于是记 $cn 阅读全文
posted @ 2022-11-16 22:25 Kobe303 阅读(18) 评论(0) 推荐(0) 编辑
摘要:考虑二分最小值,设当前二分出的值为 x。 那么把区间中 x 的变成 1,其余变为 0,那么就是查询区间内最长全 1 区间长度是否 k。 这个类似于区间最大子段和,可以用线段树轻松维护。 而发现每个 x 都可能被用到,于是换成主席树即可。 时间复杂度 $\m 阅读全文
posted @ 2022-11-16 21:09 Kobe303 阅读(20) 评论(0) 推荐(0) 编辑
摘要:首先需要发现一个性质,每个串都是单调的,因为一个不单调的串一定可以拆分成若干个单调的串,并且不劣。 于是用 DP 处理出两个单调串相交的点分给哪个串即可。 具体的话就是设 fi 表示前 i 个位置的答案,如果 ai2,ai1,ai 是单调的,那么 $$f_i=f_{i 阅读全文
posted @ 2022-11-16 19:46 Kobe303 阅读(18) 评论(0) 推荐(0) 编辑
摘要:E: 简单最短路,加一维表示当前是否翻转所有边的状态即可。 Code F: 先考虑简化版本,如果 \left{A\right} 中没有 0,如何判定。 重新表述一下条件,令 mni,mxi 分别表示第 i 行中的最小值和最大值,则有 $mn_1\le mx_1\le mn_2\l 阅读全文
posted @ 2022-11-16 18:58 Kobe303 阅读(70) 评论(0) 推荐(0) 编辑
摘要:每一个 bool 变量表示「ai 是否 j」,由于 ai 必然 1,所以总的变量数是 n(k1)。 然后我们根据题目条件来建有向边,注意 2-sat 要满足对称性,所以下文中每一个条件的逆否命题都要建边: aiai+1,等价于「对于所有的 阅读全文
posted @ 2022-11-16 07:07 Kobe303 阅读(40) 评论(0) 推荐(0) 编辑
摘要:考虑时光倒流。 由于 A 操作只会给两个活跃的点连边,所以可以忽略,倒过来相当于没有删边操作。 然后只剩下加边,加活跃点,两种操作。每次暴力 DFS 即可。 时间复杂度 O(n+Q)。 Code: #include <bits/stdc++.h> using namespace 阅读全文
posted @ 2022-11-15 19:58 Kobe303 阅读(25) 评论(0) 推荐(0) 编辑
摘要:设当前枚举到第 i 位,xi 前面期望连续 1 的个数。 令 ai=x,bi=x2,ci=x3a 很好转移, ai=(ai1+1)×pi
b 的转移考虑 (x+1)2=x2+2x+1,则有 $$b_i=(b_{i 阅读全文
posted @ 2022-11-14 19:12 Kobe303 阅读(28) 评论(0) 推荐(0) 编辑
摘要:先对 k 进行二分,将最值问题转化成判定问题。 判定一个 k 是否合法时,贪心去考虑,一个节点下面的若干条链在合并时,一条链肯定和另一条使它合并后恰好满足长度限制的链合并最优。因此我们用 multiset 来进行维护,一条长度为 len 的链,去查询最小的长度 klen阅读全文
posted @ 2022-11-14 08:18 Kobe303 阅读(19) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 9 下一页
点击右上角即可分享
微信分享提示