10 2022 档案
摘要:题目描述 求:$c_k=\sum(a_i\times b_{i-k})$。 推导 一般卷积是和一定,然而这个是差一定,于是我们考虑把 $b$ 反过来(其实反 $a$ 也可以)。 则 $c_k=\sum^{n-1}{i=k}(a_i\times b{n+k-i})$。 令 $d_k=\sum^{n-1
阅读全文
摘要:前置知识:$(a+b)\equiv(a\bmod p+b\bmod p)\pmod{p}$。 同余定理使用后不能再修改数字。那么为了能用这个公式,我 们倒序处理每个数字。 定义 $d_i$ 为 $10$ 的位数 $-1$ 次幂对 $10^9+7$ 取模的值(数 $i$ 经转化后的位数),$b_i$
阅读全文
摘要:昨天刚刚做过一道类似的题,没想到在模拟赛当中出现了。 题目描述 有一棵 $n$ 个结点的树,有 $m$ 次询问,每次询问给你两个整数 $l,r$,问存在多少个整数 $k$ 使得从 $l$ 沿着 $l$ 到 $r$ 的简单路径走 $k$ 步恰好到达 $k$。 思路 考虑将一条 $l$ 到 $r$ 的路
阅读全文
摘要:算法:树链剖分,可持久化线段树。 题目大意 给定 $n$ 个结点的一棵树,$m$ 次操作,操作有三种: 将 $x$ 至 $y$ 最短路径上的所有点的权值加上 $delta$。 对于 $x$ 至 $y$ 最短路径上的所有点 $u$,求 $\sum\sum^{\operatorname{dis}(u,y
阅读全文
摘要:题目传送门:Link。 算法:DP。 设计状态 第一眼看着道题就感觉像是 DP,再观察数据范围大概是 $O(n^2)$ 的时间复杂度。 因为要求多个 $k$ 的答案,那么状态第一维显然是令多少个数满足条件,第二位就是算到第几个数。 $dp_{i,j,0}$ 表示前 $i$ 个数有 $j$ 个满足条件
阅读全文
摘要:查询第 $k$ 小值想到权值线段树。 合并操作想到线段树合并。 维护连通性想到并查集。 并查集合并方向应与线段树合并方向一致。 查询时,先求出并查集的根再在线段树上询问。 /* * Title: P3224 [HNOI2012]永无乡 * Source: 洛谷 * URL: https://www.
阅读全文
摘要:算法:线段树合并,离散化。 考虑任意一点 $u$ 为领导者的情况。 显然,选出以 $u$ 为根的子树中薪水 $C$ 最少的 $k$ 个结点(忍者),满足 $\sum C \le m$ 的情况下使 $k$ 尽可能大,这样 $u$ 为领导者的最大满意度为 $L_u \times k$。 考虑如何高效地求
阅读全文
摘要:关于扫描线的介绍可以去看 OI Wiki。 但那上面的参考代码并不好,下面给出了带注释的 POJ 1389 题代码。 /* * Title: Area of Simple Polygons * Source: POJ * URL: http://poj.org/problem?id=1389 * A
阅读全文
摘要:一句话,大模拟,对着题意敲就完了。 干就完了,奥利给! 正正好好 618 行~ // 10665 Problem G:【省选基础 模拟】魔兽世界终极版 #include <iostream> #include <cstdio> #include <cstring> #include <string>
阅读全文
摘要:哈密顿回路需要把每个点经过且只经过一遍,而在树上,这只能是一条链。 手推一下可以发现,操作相当于把每个点复制一遍,等同于给允许这个点多经过一次,有了这个结论就容易了许多。 在树上 DFS,每次返回到父亲就操作一次,但这样不能保证操作最少(当然,最后不需要回到根节点)。 不需要返回的点构成了一条链,剩
阅读全文
摘要:30pts 针对 $n \le 100$ 的数据,暴力对每个询问的接受程度跑一遍,时间复杂度 $O(n^3)$。 70pts 显然,在 MST 上走最优。 针对 $l_i,r_i,k_i \le 10^5$ 的数据,考虑预处理接受程度为 $i$ 时能去的不同种类的景点数 $f_i$,答案为 $\su
阅读全文
摘要:考虑把一次交换产生的贡献记录在交换的两个数字中较小的那个数字上。则构造一个好的序列的过程可以看成是:按照从小到大的顺序枚举每个数,每次选择将这个数放在序列的左边或右边。 不难发现,每次放到左边或右边需要移动的次数是初始序列中左边或右边比这个数大的数的个数,与其它数选择放在左边还是右边无关。 直接用树
阅读全文
摘要:一句话,大模拟,照着题意敲就完了。 写的期间甚至因为疫情导致程序被锁在了机房 www //3760. 魔兽世界(修订版) #include <iostream> #include <cstring> #include <string> using namespace std; /**********
阅读全文
摘要:0. 洛谷 P3987 我永远喜欢珂朵莉~ 算法:树状数组。 模型抽象 Trick:$\forall k \ge 2$,最多 $\log a_i$ 次 $a_i \div k$ 使得 $a_i=1$。 证明:每次最少会使 $a_i$ 减半,最多 $\log$ 次就可以变为 $1$。 所以修改的复杂度
阅读全文
摘要:来一发莫比乌斯反演的题解。 $$ \begin{split} ans & =\sum^{n-1}{i=1} \sum^{n-1}{j=1} [\gcd(i,j)=1]\ & = \sum^{n-1}{i=1} \sum^{n-1}{j=1} \sum_{d|\gcd(i,j)} \mu(d)\ &
阅读全文
摘要:首先,对于圆环问题,我们肯定要复制加倍转成区间。 然后根据 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)$。 注
阅读全文

浙公网安备 33010602011771号