08 2022 档案
摘要:前言 单调队列的用处非常广泛! 今天也要加油哦ヾ(◍°∇°◍)ノ゙ 定义 维护一个队列,使其保持降序或升序状态。 queue:队列数组。 head:队列头下标。 tail:队列尾下标。 例题 洛谷P1886 滑动窗口 /【模板】单调队列 单调队列模板题,维护两个队列,一个升序一个降序。 每次先将不在
阅读全文
摘要:此文章介绍的均为加法操作 前言: 上篇文章介绍了线段树的基础操作。 其中区间修改用递归的方式一层层修改(类似于线段树的建立),但这样的时间复杂度比较高。 所以这篇文章引入一个新概念:懒惰标记。 今天也要加油哦!😙 Part 3:懒惰标记(lazy_tag) Part 3.1:概念引入 使用懒惰标记
阅读全文
摘要:Part 0:前言 突发奇想,来介绍快读快写。 希望大家喜欢!😉 Part 1:快读快写是什么? 因为getchar()和putchar()很快,所以我们可以利用这个把输入输出的速度提到很快。 Part 2:怎么写? Part 2.1:快读 写法: 首先定义函数int read() 既然是读入整数
阅读全文
摘要:Part0:前言 如果你在考提高组前一天还在问这个问题,那么你会与一等奖失之交臂;如果你还在冲击普及组一等奖,那么这篇博客会浪费你人生中宝贵的5~20分钟。 Part1:概念引入+建树(以区间求和为例) Part1.1:概念引入 线段树,顾名思义,用线性的方式保存一颗二叉树。 举个例子: 有一串数1
阅读全文
摘要:为什么想到写这个了呢,因为实在是太好用了。 ~~文章其实是转载来的~~ IDA*算法:迭代加深的+评估函数 A算法的本质时带评估函数的优先队列BFS,其最关键的部分在于评估函数的选取。那么可以考虑在DFS中也采用相同的优化。IDA就是这部一种算法,IDA*=迭代加深DFS+评估函数(迭代加深:限定深
阅读全文
摘要:Part 0:前言 学了这个算法好多次了,是时候总结一下啦😆 Part 1:几个概念 二分图:一类特殊的图,它可以被划分为两个部分,每个部分内的点互不相连。 最大匹配数:二分图中没有公共端点的边的数量的最大值。 最小点覆盖:我们想找到最少的一些点,使二分图所有的边都至少有一个端点在这些点之中。倒过
阅读全文
摘要:1.邻接矩阵 邻接矩阵是表示顶点之间相邻关系的矩阵。 例如:用不为0时表示到有一条边(也可以用不为0时表示到有一条长度为的边) 实现: int x,y,z;//无向图带权加边 scanf("%d%d%d",&x,&y,&z);
阅读全文
摘要:Part 0 前言 刚学完了树形DP,是时候来总结一下了!😀 Part 1 基础部分 树形DP就是在树上的DP。 这里先放一下遍历树的模板: void dfs(int u,int fa){ for(int i=head[u];i;i=nxt[i]){ int v=to[i]; if(v==fa)c
阅读全文
摘要:分糖果 题意 选择L~R中的某个数 , 使得x mod k的结果最大。 思路 分两种情况考虑: 若 L 和 R 对 K 取模后在同一区间,则必然在 x=R 位置取到最大值; 否则 L~R 必然跨越多个区间,则取模后的结果必然有 k-1。 而对于是否在同一区间,在除以 k 后,商是否一致判断即可。 参
阅读全文