随笔分类 - 题解
摘要:先令 bi=⌊ai⌋b_i = \lfloor a_i \rfloorbi=⌊ai⌋。 由于 ∑ai=0\sum a_i = 0∑ai=0 且 ⌊x⌋≤x\lfloor x \rfloor \leq x⌊x⌋≤x,所以有 ∑bi≤0\sum b_i \leq 0∑bi≤0。 可以发现将一个非
阅读全文
摘要:本题解只讲述满分做法。 根据异或的性质,显然有 (x⊕x)=0(x \oplus x) = 0(x⊕x)=0。而对于两数 x,yx, yx,y 且 x≠yx \neq yx=y,(x⊕y)≠0(x \oplus y) \neq 0(x⊕y)=0。 对于每次操作 (x,y)(x,y)(x,y),只
阅读全文
摘要:简单倍增。 前置:树上倍增 k 级祖先。 注意题目无修改,所以对于询问距离,直接预处理出每个点到根的距离,然后相加减去两倍 LCA 即可,非常套路。 对于第二位,先求出 u,vu,vu,v 的 LCA,先看 u→lcau \rightarrow lcau→lca 这条路径上经过的点数是否 ≥k\ge
阅读全文
摘要:题意 给定 H×WH \times WH×W 的一个矩形,矩形中每个点有一个不超过 nnn 的正整数。 你需要对于 0≤i≤H−h,0≤j≤W−w0 \leq i \leq H-h, 0\leq j \leq W-w0≤i≤H−h,0≤j≤W−w 的所有 (i,j)(i,j)(i,j),将 k<i≤
阅读全文
摘要:考虑操作逆序,那么对于操作 111,加法变成减法。 问题在于对于操作二,如何找到答案。 显然我们可以发现,经过这次操作二后,序列中的每个数都 ≥\geq≥ 这次操作二的答案,于是操作二的答案必然 ≤\leq≤ 这个操作二的区间最小值。 我们可以发现,答案应取区间最小值,因为假如答案可以小于区间最小值
阅读全文
摘要:考虑求排名怎么做。 一种空间比较优秀的做法就是树状数组加二分找排名,即值域树状数组上二分。 然后删除即在树状数组上将数的值 −1-1−1 即可。 复杂度应该是 O(nlogn+qlog2n)O(n \log n + q \log^2 n)O(nlogn+qlog2n)。常数有点大,加了快读卡一卡
阅读全文
摘要:考虑一种特殊情况:即原序列 aaa 中存在一个 111,例如 a=[3,4,5,6,1]a=[3,4,5,6,1]a=[3,4,5,6,1],显然最优的是把 111 和相邻的进行操作,只需要 n−1n-1n−1 次即可。 若有多个 111,令 c=∑i=1n[ai==1]c = \sum \limi
阅读全文
摘要:考虑操作有删边但没有恢复边的操作,很容易想到离线后逆序操作的套路。 逆序后操作即为只有加边没有删边了,并查集维护即可。 但是注意到题目要求点权和,所以带权并查集维护,修改权值也可以轻松做,即在父亲的点上减去本身的贡献加上新的贡献即可。 #include <iostream> #include <cs
阅读全文
摘要:先考虑暴力做法。 对于深度 ≥x\geq x≥x 的点变成黄色,相当于对于每一个深度为 xxx 的点,将以它为根的子树中每个点都变成黄色。 但是显然深度为 xxx 的结点的数量是 O(n)O(n)O(n) 级别的,每次用线段树维护区间覆盖区间求和的理论复杂度上界是 O(mnlogn)O(mn\lo
阅读全文
摘要:容易想的题目。 考虑两数异或为 111 的性质。 结论:x⊕(x+1)=1x \oplus (x+1)=1x⊕(x+1)=1。 考虑两数 x,yx,yx,y,将每一个用二进制表示出,显然只有 20=12^0=120=1,其余 222 的幂都不可能为 111,即两数异或为 111 当且仅当这两个数二进
阅读全文
摘要:考虑对 nnn 进行二进制拆分,最终可以表示成 n=2a1+2a2+⋯2apn =2^{a_1} + 2^{a_2} + \cdots 2^{a_p}n=2a1+2a2+⋯2ap,ai≥0(1≤i≤p)a_i \geq 0(1 \leq i \leq p)ai≥0(1≤i≤p)。 当 p>k
阅读全文
摘要:考虑将 0 权值设为 −1-1−1,将 1 权值设为 111。 题目即求一段最长子串使得这一串的权值和为 000。 考虑 pip_ipi 为权值,其中 1≤i≤n1 \leq i \leq n1≤i≤n,前缀和为 si=∑j=1ipis_i = \sum \limits_{j=1}^i p_isi
阅读全文
摘要:与最小乘积生成树类似。 考虑维护左下凸壳上的点,每次重设边权然后求最小匹配。 具体做法和上面的链接类似,只不过最小生成树部分变成了最小匹配。 代码使用费用流: #include <iostream> #include <cstdio> #include <algorithm> #include <c
阅读全文
摘要:不妨将 ∑e∈Tae\sum \limits_{e \in T} a_ee∈T∑ae 和 ∑e∈Tbe\sum \limits_{e \in T} b_ee∈T∑be 分别作为 x,yx,yx,y 放入平面直角坐标系,题目要求即求一个 x⋅yx \cdot yx⋅y 最小的点对 (x,y)(
阅读全文
摘要:题意 给定一个无权无向图和 ppp 个点,需要在图中删去一些点使得这 ppp 个点和点 111 均不连通且这 ppp 个点和 111 都没有被删除。问至少删除多少个点。 解法 首先先解决这样一个问题:题目要求删点,但是网络流最小割是边权,考虑转化。 对每个点 uuu 分入点和出点,入点为 uuu,出
阅读全文
摘要:题意 给定序列,多次求区间最大子段积。 解法 考虑线段树。 每个区间维护前缀最大值和最小值,后缀最大值和最小值,pushup 时只有可能最大乘以最大或最小乘以最小(负数乘以负数)。 #include <bits/stdc++.h> using namespace std; #define ll __
阅读全文
摘要:较为基础的 DP。 考虑 dpi,jdp_{i,j}dpi,j 表示前 iii 个数中和除 333 余数为 jjj 的方案数,其中 j∈{0,1,2}j \in \{0, 1, 2\}j∈{0,1,2}。 定义 f(x)f(x)f(x) 表示 ∑i=lr[i≡x(mod3)]\sum \limit
阅读全文
摘要:考虑 01-trie。 把每个前缀异或和变成二进制插入 01-trie,然后贪心地对后缀异或和搜索 01-trie。1012≈24010^{12} \approx 2^{40}1012≈240,注意空间复杂度。 显然 2p>∑i=0p−12i2^p > \sum \limits_{i=0}^{p-1
阅读全文
摘要:听说赛前写题解可以 rp++。 我们需要求每天融化总数,但直接求并不容易,考虑求每一堆的起始时间到结束时间,那么这一区间内每一天都应该贡献 +1+1+1,注意每个区间的最后一天可能融化不满。 考虑对于每个数二分加前缀和找到终止天数,然后使用线段树区间 +1+1+1,特判最后一个数即可,时间复杂度 O
阅读全文
摘要:思考满足条件的序列的本质。 如果对于序列 aaa 的每个后缀 bbb,都有 aaa 比 bbb 屑,那么就是说,a1≤a2,a3,⋯ ,ana_1 \leq a_2, a_3, \cdots, a_na1≤a2,a3,⋯,an,a2≤a3,a4,⋯ ,ana_2 \leq a_3, a_4,
阅读全文

浙公网安备 33010602011771号