随笔分类 - 题解
摘要:首先,对于圆环问题,我们肯定要复制加倍转成区间。 然后根据 Hall 定理可得:$\sum^{j}{k=i}a_k \le l+i-r_j+1$,即 $\sum^{j}{k=i}a_k+l_i-1 \le r_j$。 考虑线段树维护 $\sum^{j}_{k=i}a_k+l_i-1$,我们按右端点排
阅读全文
摘要:错解 每次跑二分图匹配,时间复杂度显然爆炸。 ~~时间复杂度:我被杀手皇后摸过了~~ 正解 Hall 定理 Hall 定理:设二分图中 $G=<V_1,V_2,E>,|V_1| \le |V_2|$,则 G 中 存在 $V_1$ 到 $V_2$ 的完美匹配当且仅当 $\forall S \sub V
阅读全文
摘要:题目大意 给定一个由 $n$ 个点 $m$ 条边的无向图,每条边有权值 $(a,b)$,求一条路径使这条路径上的 $(a_{\max}+b_{\max})$ 最小。 思路 正解应该是 LCT 动态维护 MST,本篇题解介绍一种“歪解”——动态加点 SPFA。 我们先只考虑一个权值,那么这就是最单纯的
阅读全文
摘要:刚开始看到 Acc 上这题标签线段树的时候我还是很惊讶的,这不就是一个小小的贪心吗? ~~暴力,暴力怎么做?贪心!贪心!贪心!然后大力出奇迹。~~ 首先我们将这个数组排序。然后,我们可以发现,对于每个大袋鼠可以装的小袋鼠集合,选取集合中最大的袋鼠最优。 我们就可以把数组以 $\dfrac{n}{2}
阅读全文
摘要:Solution 1 二分图染色 显然这题是构造染色方案,于是我们考虑将矩阵转化成图进行染色。 结论:将同一行的点两两配对,将同一列的点两两配对,形成的一定是二分图。 证明:由于每个点最多连出一条横边和一条竖边,那么这张图上的环一定是横竖边交替排列的,即所有的环都为偶环。 所以我们对这张二分图进行黑
阅读全文
摘要:带修莫队模板,双倍经验,注意 add 和 del 的顺序以及数据范围(洛谷上)。 //bzoj#2453. 维护队列 #pragma GCC optimize(2) #include <bits/stdc++.h> using namespace std; const int MAXN=140000
阅读全文
摘要:如果我们对给定的序列求出异或意义下的前缀和,哪么题意变为求满足 $sum_{i-1} \operatorname{xor} sum_j=k$ 的 $(i,j)$ 数量。 由于 $x \operatorname{xor} y=z$ 等价于 $x \operatorname{xor} z=y$,所以在加
阅读全文
摘要:莫队板子。 //P2709 小B的询问 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN=50005; struct Query { int l,r,id; }q[MAXN]; int
阅读全文
摘要:主要思路 显然我们需要求出所有范围内的合法幸运号码,然后容斥。 容斥就是暴搜+剪枝。 剪枝&优化 一个幸运号码是另一个幸运号码的倍数,则这个数不会产生任何贡献,剪枝。 选定数的 LCM 大于 $r$ 则直接退出。 将幸运号码从大到小排序,这样搜索的时候能更快突破上界。 对于所有大于 $\dfrac{
阅读全文
摘要:区间相同颜色个数,可以离线,我们想到用普通莫队解决。 设 $cnt_i$ 表示颜色为 $i$ 的袜子的数量,则取到两只同颜色的袜子的方案数为 $\sum^n_{i=1}cnt_i \cdot (cnt_i-1)(cnt_i \ge 2)$,总方案数为 $(r-l+1) \cdot (r-l)$。 注
阅读全文
摘要:简化题意:求原图的补图的连通块个数。 众所周知,补图有这样一条性质:若图不连通,则其补图一定连通。证明略。 于是我们考虑枚举满足 $vis_{\text{u}}=0$ 的点 $\text{u}$,然后将其 push 进队列并打上标记(vis)。然后枚举与 $\text{u}$ 在补图上相邻的且 $v
阅读全文
摘要:本题类似普通二维树状数组,只不过是把操作改为异或。 令 $d_{i,j}$ 为二维数组异或意义下的差分数组,则 $(x1,y1)$ 至$(x2,y2)$ 的异或和为: $$\sum^{\text{xor}}_{x1 \le i \le x2} \sum^{\text{xor}}_{y1 \le j
阅读全文
摘要:树链剖分板子,两次 DFS 预处理之后用线段树维护,问题转化为单点修改,区间查询(求和、最大值),对于询问路径跳到 LCA 上再查询即可。 //P2590 [ZJOI2008]树的统计 #pragma GCC optimize("Ofast") #include <bits/stdc++.h> us
阅读全文
摘要:错误示范:倍增+暴力 开始看到这题时限 6s 本来想着来一发暴力区间倍增 LCA,后来发现是多测之后自然凉凉,准保 T 飞。 然而没有 T,acc 上 RE(ReCoders),HDU WA。 正解:树剖+线段树 维护区间你想到了什么?当然是线段树啊! 分别考虑线段树的 build 和 query
阅读全文
摘要:树状数组板子,单点修改,区间查询,注意处理读入字符的问题。 //7961 Problem D:【省选基础数据结构 树状数组】树状数组 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN=
阅读全文
摘要:本题解来自于洛谷大佬@_HMZ_。 大概题意:给一张无向图,将这张图分为两个点集,每个点集构成的图是一个完全图(即团),使得两张完全图的边总数最小。 我们知道,一张完全图的边数是 $\frac{n\times(n-1)}{2}$。 假设第一个点集的点数是 $n$,第二个点集的点数是 $m$, 边数就
阅读全文
摘要:\begin{split}\sum^{R}_{x=L} x \left \lfloor \dfrac{Ax+C}{B} \right \rfloor & = \sum^{R}_{x=0} x \left \lfloor \dfrac{Ax+C}{B} \right \rfloor - \sum^{L
阅读全文
摘要:分析 题意可以简化为用 $[1,n]$ 的数,组成一个完全二叉树,使其满足小根堆性质,求方案数。 令 $f_i$ 表示在 $i$ 点的方案数,$s_i$ 表示 $i$ 的子节点个数(包括 $i$),于是得出递推式: $$f_i=C^{s_i-1}_{s_{i \times 2}} \times f_
阅读全文
摘要:最大权闭合子图 的模型 模型:有若干个物品,每种物品有一个价值 $v_i$,选取了物品就意味着获得了价值。 物品之间有限制关系:$x \to y$ 表示若要选择物品 $x$ 则必须选择物品 $y$。目标是最大化价值和。 解法 考虑使用最小割解决此类问题: 将每个物品与源点 $s$ 和汇点 $t$ 相
阅读全文
摘要:
前置知识 SPFA 网络流 平面图转对偶图 分析 尝试贪心之后发现,可以用最小割来解决问题,然而直接套用经典算法发现:TLE! 最大流—最小割定理 定理:在一个网络流中,能够从源点到达汇点的最大流量等于如果从网络中移除就能够导致网络流中断的边的集合的最小容量和。即在任何网络中,最大流的值等于最小割的
阅读全文
前置知识 SPFA 网络流 平面图转对偶图 分析 尝试贪心之后发现,可以用最小割来解决问题,然而直接套用经典算法发现:TLE! 最大流—最小割定理 定理:在一个网络流中,能够从源点到达汇点的最大流量等于如果从网络中移除就能够导致网络流中断的边的集合的最小容量和。即在任何网络中,最大流的值等于最小割的
阅读全文

浙公网安备 33010602011771号