摘要:
传送门 这场打的有一种我又行了的感觉 A - When? 向下取整 + 取余 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <string> #include <queue> 阅读全文
摘要:
Aragorn's Story 树链剖分模板 维护两个点之间路径的值,剖分之后用线段树 区间修改 单点查询 注意初始化(不会有人没初始化边,然后 MLE 了半个小时吧) (为什么是 MLE 而不是 RE!!小编也不太清楚,小编也很想知道,[狗头]) #include <iostream> #incl 阅读全文
摘要:
【模板】最近公共祖先(LCA) 倍增 lca 模板 真心觉得二进制太奇妙了 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; #define endl ' 阅读全文
摘要:
Jumping Takahashi 2 dijkstra 或 Floyd 或 二分 dijkstra 枚举从每个点出发到所有点的最大代价的最小值 同理,Floyd 跑完之后再找这个最小值 二分答案,通过 bfs 判断是否有个点能跑遍历所有的点 #include <iostream> #include 阅读全文
摘要:
Teleporter Setting bfs 先构建一个 0 号虚拟点,最后再遍历这个点是其他的点 答案有两种来源: 本身从 1 直接到达 n(可经过 0 号虚拟点) 经过 0 号虚拟点和当前假设的点 i 之间的代价为 0 的特殊边 对于第一种情况,只用计算最短路即可 对于第二种情况,则为 min( 阅读全文
摘要:
传送门 vp 了一场之前的 ABC,不知道是水平下降还是真的难,就很多要想很久,寄了 A - A to Z String 2 向下取整考虑一下是在哪个组就好 #include <iostream> using namespace std; int main() { int n, x; cin >> 阅读全文
摘要:
Fixed Point Guessing 二分 考虑利用奇偶性 如果在一个区间 $[l,r]$ 内,若有一组数交换后,有一个数字在该区间,则说明另一个数也在该区间里 因此考虑对询问后给出的被交换数字 $x$ 进行检查,如果 $l \leq x \leq r$,则说明有两个数在这个区间内,cnt += 阅读全文
摘要:
传送门 考试周也快结束了,想打一场 cf 找一找手感,结果惨不忍睹,大寄 刚好这场前 4 题都是思维题,直接卡死 A - XOR Mixup 这样构造出来的数组异或和一定为 0,说明每一个数都是答案 #include <iostream> #include <cstdio> #include <al 阅读全文
摘要:
分配问题 二分图 + 费用流 建图: 源点与人相连,容量为 $1$,费用为 $0$ 汇点与工作相连,容量为 $1$, 费用为 $0$ 人与工作一一相连,容量为 $1$,费用为对应的效率 最小费用最大流模板 最大费用最大流的时候,只需要把费用更改为负数即可 #include <iostream> #i 阅读全文
摘要:
飞行员配对方案问题 之前做的,没想到忘了发 二分图匹配最大流问题 模板 #include <iostream> #include <cstdio> #include <algorithm> #include <queue> using namespace std; const int maxn = 阅读全文
摘要:
圆桌问题 最大流 建图完就很简单 考虑将单位和餐桌视为点 限制每个餐桌上的代表所属的单位不同:只要将单位和餐桌之间的流容量设置为 $1$ 源点对单位有容量为 $r_i$ 的边,餐桌对汇点有容量为 $c_i$ 的边 最大流如果为 $\sum_{i=1}^{m}r_i$ 则说明每个人都能上桌 答案的输出 阅读全文
摘要:
负载平衡问题 费用流 主要是建图,其他都是模板 每个仓库视为一个点,设置一个源点,对仓库有一条边,容量就为仓库原有的库存量,费用为 0 然后相邻的仓库之间有一条容量为无穷大,费用为 1 的边 每个仓库对汇点有一个边,容量为平均值,费用为 0 #include <iostream> #include 阅读全文
摘要:
软件补丁问题 状态压缩 + 最短路 对于当前 bug 的状态,可以作为一个点,表示的方式用状态压缩的方式,接着边就是通过一个补丁,转换到另外一个 bug 状态 直接最短路,dijkstra 或 bfs 或 SPFA 都可 #include <iostream> #include <cstdio> # 阅读全文
摘要:
±1 Operation 2 离线 + 尺取 或者 直接二分 二分更简单 二分一下当前询问的数 $X$ 的位置 $index$,左边(小于等于当前数)的每一个数字的贡献都为 $X - A_i$,右边(大于当前数)的每一个数字的贡献都为 $A_i - X$,因此考虑求和的时候用前缀和优化一下就好 #i 阅读全文
摘要:
Lucky Numbers 思维题 不难看出,如果我们固定了数组 $A$ 的一个值,那么数组 $A$ 的其他值都可以通过数组 $S$ 算出来,所以我们可以通过一个位置的值来表示一整个数组 $A$,这样的话就可以枚举所有位置上的最佳值,判断他是属于哪个数组的,然后这个数组的值 + 1,最后选取最大值即 阅读全文
摘要:
传送门 A - You should output ARC, though this is ABC. 直接输出 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <string> 阅读全文
摘要:
孤岛营救问题 bfs + 状态压缩 对钥匙的状态进行压缩,然后 bfs 剪枝搜索 #include <iostream> #include <cstdio> #include <queue> using namespace std; int dp[20][20][1 << 16 | 1]; int 阅读全文
摘要:
小红的子序列 今日无事,勾栏.. 今天心血来潮打了一下牛客,发现了一道有趣的题 dp 大概就是把 颜色 和 奇偶 分成两个状态:当前位置是否是奇数,当前颜色是否是红色,类似于状态压缩一样压一下,然后 dp 不断维护最大值就好 状态转移就是从将当前状态 取反 转移过来就好 #include <iost 阅读全文
摘要:
【模板】最小费用最大流 EK 改 SPFA #include <iostream> #include <queue> #include <algorithm> using namespace std; typedef long long ll; const int maxn = 1e5 + 10; 阅读全文
摘要:
Rectangle GCD 线段树 + gcd 性质 辗转相减法:如果 $a$ 和 $b$ 互质,则 $a + b$ 和 $|a - b|$ 也与 $a$ 和 $b$ 互质 由此我们可以得到 $gcd(a, b) = gcd(a, |a - b|)$ 考虑,在第 $i$ 行中,从 $a$ 列到 $b 阅读全文