• 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)$ 简单做法。