随笔分类 - 题解
摘要:注意本题输出的是排列而非序列! 考虑分类讨论,设 ccc 表示 ∑i=1n[ai≠bi]\sum_{i=1}^n [a_i \neq b_i]∑i=1n[ai=bi],即 ai≠bia_i \neq b_iai=bi 的 iii 的个数,ansians_iansi 表示答案。 若 c
阅读全文
摘要:比较容易的最短路。 主要考虑如何建图,可以发现每个点只要不是 X,那么它可以和与它四联通的每个点建边,那么边权是多少呢? 设目前点为 (x1,y1)(x_1, y_1)(x1,y1),目标点为 (x2,y2)(x_2, y_2)(x2,y2),(x2,y2)(x_2, y_2)(x2,y2
阅读全文
摘要:来一篇打表的解法。 显然暴力打表会很慢,考虑找一下规律,我们先列举出前几个二进制只有 111 个 000 的数看看:2,5,6,11,13,14,23,27,29,302, 5, 6, 11, 13, 14, 23, 27, 29, 302,5,6,11,13,14,23,27,29,30,直接看没
阅读全文
摘要:显然一个 DP,考虑设 f1i{f1}_if1i 表示将前 iii 个字符转换成目标字符串的最小次数,f2i{f2}_if2i 表示将前 iii 个字符转换成与目标字符串正好相反的最小次数。那么容易推出,f1i{f1}_if1i 与 f2i{f2}_if2i 都可以通过前一个状态,即 f1i
阅读全文
摘要:题意 给定一个单调上升序列 aaa,求最多在这个序列中选多个数(不要求相邻),满足相邻两个数不互质。 解法 显然有一个 O(n2logn)O(n^2 \log n)O(n2logn) 的 DP,会超时。 考虑 gcd(x,y)>1\gcd(x,y) > 1gcd(x,y)>1 这个式子,事实上就
阅读全文
摘要:题意 给定一个初始值全部为 000,长度为 5×1055 \times 10^55×105 的数列,要支持单点加上某个数,以及查询 y,y+x,y+2⋅x,⋯ ,y+k⋅xy, y + x, y + 2 \cdot x, \cdots, y + k \cdot xy,y+x,y+2⋅x,⋯,y+k⋅
阅读全文
摘要:本题与这题基本完全一样,只是字符的下标这里是从 000 开始。 显然,这是可持久化线段树的较为简单的模板题。撤销事实上只是换根,就是将当前的根换成 xxx 次操作之前的根,线段树动态开点即可。 代码: #include <iostream> #include <cstdio> #include <a
阅读全文
摘要:题意 给定一颗树,树有点权。多次询问,每次询问以 uuu 为根的子树中第 kkk 小的点权的点编号,点权互不相同。 解法 要求树上询问问题,可以想到树剖套各种数据结构,但是注意到这道题只需要求子树的问题,所以考虑用 dfs 序和主席树解决这个问题。 主席树其实就是【模板】可持久化线段树 2,dfs
阅读全文
摘要:考试考到这个题,101010 分钟写了半天没写对,放弃了,赛后 555 分钟不到切了。发现 dp[N][3] 写成了 dp[3][N]。 显然是一道 DP 裸题,设 dpi,j(j∈{0,1,2})dp_{i,j}(j \in {\{0,1,2\}})dpi,j(j∈{0,1,2}) 表示第 ii
阅读全文
摘要:模拟退火练习题。 考虑模拟退火,显然每次随机两个点并交换这两个点,不过注意要判断交换这两个点后序列是否仍然成立,也就是对于最后一轮是否交换后仍然成立,然后计算整个序列的贡献即可。 由于是模拟退火,所以显然考虑卡时,代码: #include <iostream> #include <cstdio> #
阅读全文
摘要:要是赛时对 pb_ds 有掌握就 200200200 分了! 提供一个平衡树写法,虽然平衡树我并不会写,但是 pbds 内置有平衡树啊,所以我们考虑用内置的平衡树写,注意要用 rb_tree_tag 而非 splay_tree_tag,内置的 Splay 很慢,开了 O2 还是超时,而内置红黑树不开
阅读全文
摘要:看到了第一篇题解,我懂了随机化的艺术。 确实,这种区间众数用随机化的错误概率很小,并且也快,那我就是用这种方法的。 显然我们知道区间众数是区间中某个数出现次数 >>> 区间的一半,那么我们考虑每一次随机抽不中的可能是 12\frac{1}{2}21,选 kkk 次抽不中的概率是 12k\frac{
阅读全文
摘要:题意 根据题意模拟排序,自己看吧。 解法 蓝题模拟,确实很容易。 搞个 map 记录每个人得分以及每个人的排名出现次数,cmp 函数很容易写,非常容易。 代码: #include <iostream> #include <cstdio> #include <algorithm> #include <
阅读全文
摘要:题意 给定一个二维平面,其中有多个点 (xi,yi)(x_i, y_i)(xi,yi),对于每个点 (xi,yi)(x_i, y_i)(xi,yi) 都有一个权值 pip_ipi。给定多组询问,每次询问点对 (x1,y1)(x_1, y_1)(x1,y1) 和点对 (x2,y2)(x_
阅读全文
摘要:题意 给定一个序列 aaa,支持两种操作: 求区间 al,al+1,⋯ ,ara_l, a_{l+1}, \cdots, a_ral,al+1,⋯,ar 中严格小于 vvv 的数的个数。 单点修改。 解法 块内二分模板题。 考虑每一个块维护一个有序的 vector 或者其他容器,块内查询用 l
阅读全文
摘要:随便搞,设一开始等式 a+b=ca+b=ca+b=c,显然 ∣a+b−c∣=2\left| a + b - c \right| = 2∣a+b−c∣=2 时有解,然后判断是 c−(a+b)=2c-(a+b)=2c−(a+b)=2 还是 (a+b)−c=2(a+b)-c=2(a+b)−c=2,模拟即可
阅读全文
摘要:首先,这里提供的代码可能因为评测机波动而导致无法在不开 O2 下通过,但是开了 O2 后亲测不会出现问题。 现在步入正题。 很多人用了珂朵莉树,但是这题我给大家带来线段树套 bitset 的解法,这是以前的题解没有的。 事实上就是线段树每个点开一个 bitset 维护这个区间中出现了哪些数,那么显然
阅读全文
摘要:我们充分发扬人类智慧:事实上搜索可做。 首先暴力搜索显然是 O(n!)O(n!)O(n!) 的,那么我们重点考虑剪枝。 首先我们假设深搜过程中每个搜索的是事件而不是人。 我们设 mim_imi 表示第 iii 件事最大的成功率,那么显然深搜过程中假设搜到了第 depthdepthdepth 件事,
阅读全文
摘要:题意 给定一个 nnn 个数的序列 aaa,定义对于区间 [l,r][l,r][l,r] 的 cic_ici 表示 al,al+1,⋯ ,ara_l, a_{l+1}, \cdots, a_ral,al+1,⋯,ar 中 iii 的出现次数。多组询问,每组询问指定 l,r,kl, r, kl
阅读全文
摘要:题意 给定序列 aaa,定义幸运数为各位数字只含有 4,74, 74,7 的数字,例如 447444744474 是幸运数,而 417741774177 则不是。现在有 mmm 次操作,每次可能是将 al,al+1,⋯ ,ara_l, a_{l+1}, \cdots, a_ral,al+1,⋯,
阅读全文

浙公网安备 33010602011771号