-
CF707E Garlands 题解
简要题意:在一个 $n\times m$ 的矩阵($n,m\le2000$)中,每个点都有个灯,刚开始所有灯都是亮的,每个灯都有一个颜色($k\le2000$)和一个权值,保证所有颜色相同的点是联通块。
现在操作 $q$ 次- 操作
SWITCH x:把所有颜色为 $x$ 的灯状态取反,开的变关,关的变开。 - 操作
ASK x1 y1 x2 y2:问这个子矩阵所有开着的灯的权值之和,本操作数量小于 $2000$ 次。
- 操作
-
CF1181C Flag 题解
题意:问在一个 $n\times m$ 的平面里有多少旗帜,旗帜的定义是三条宽度相等的带子,相邻的带子颜色不能相同(第一和第三条的颜色可以相同)。
-
珂学的 vector 存反边,删边
存边,是 $99\%$ 的图论题都会用到的,目前主流是采取链式前向星的写法,记录
head数组表示第 $i$ 个点的第一条边,next数组表示下一条边的编号,go数组表示这条边走向哪里,还可以记录个val表示这条边的权值。链式前向星的优点是寻找反边,删除边比较方便,缺点是比较长,内存访问不连续在大数据下慢。
-
C++ bit 库介绍
C++20 加入了一个叫做
bit的库,不如来看看里面有什么?
-
C++ ranges 库介绍
ranges库是 c++20 开始具有的语法,对应的头文件是#include<ranges>。
-
C++ adl 机制区分
namespace f1{ namespace f2{ struct cow{ friend void solve(cow){cout<<"f1::f2::cow";} }; } void solve(f2::cow){cout<<"f1\n";} namespace f2{ void solve(cow){cout<<"f1::f2\n";} } } void solve(f1::f2::cow){cout<<"::";} namespace g1{ void solve(f1::f2::cow){cout<<"g1";} namespace g2{ void solve(f1::f2::cow){cout<<"g1::g2";} void print(){solve(f1::f2::cow{});} } }
-
CF1619G Unusual Minesweeper 题解
题意:平面上有 $n$ 个地雷,第 $i$ 颗地雷在 $(x_i,y_i)$,会在第 $t_i$ 秒自动爆炸,在一个地雷爆炸后,在这个雷正十字形内距离小于 $k$ 的雷也会爆炸。你可以在第 $i$ 秒手动引爆一个雷,问要让所有雷爆炸要多久?
-
CF1285D Dr. Evil Underscores 题解
给定一个序列 $a$,选取一个 $x$,使 $\max_{i=1}^na_i\oplus x$ 最小。
-
CF1276B Two Fairs 题解
给定图和两个点 $p_1,p_2$,问有多少点对满足这对点之间的路径必须经过 $p_1,p_2$。
-
LGP8671 [蓝桥杯 2018 国 AC] 约瑟夫环题解
约瑟夫环有 $\mathcal O(n)$ 做法相信大家都知道。这里就不在介绍了,这里给出一个不知道这个结论的 $\mathcal O(n\log n)$ 简单做法。