• CF893D Credit Card 题解

    简要题意:你有一张信用卡,$n$ 天有 $n$ 个操作,每次操作给定一个 $x$,如果 $x$ 是 $0$ 那么银行会查询信用卡里的金额,要保证金额是非负数;否则你卡里的金额会变化 $x$。每天操作前你可以在卡里存入任意多的钱,你要输出的是最小存钱次数,若无解输出 $-1$。另外,无论何时你卡里的金额不得超过 $m$。


  • 三角函数恒等变形

    基本性质


  • CF1141F2 Same Sum Blocks (Hard) 题解

    简要题意:从一个序列里选出尽可能多的互不相交子串,使得所有子串的和相等并且使子串的数量最多,输出那些子串。


  • 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$ 秒手动引爆一个雷,问要让所有雷爆炸要多久?