08 2023 档案
摘要:plaese kill me. && don't forget me. #### 题目描述 给定 个字符串 只包含 ```0,1,2```,现在要捏一个序列 , 表示 可以捏成什么。```1,2,3``` 形成环形吊打关系, 表示
阅读全文
摘要:[link](https://www.luogu.com.cn/problem/P4809) 最无聊的时候写的最~~啰嗦~~详细的题解。 #### 题目描述 给定一个 的点阵和两类边,第 行 列的城市我们叫祂城市 。 横边:给定 个三元组
阅读全文
摘要:#### 第一届竞赛时间 全国青少年信息学奥林匹克竞赛(NOI) 1984 全国青少年信息学奥林匹克联赛(NOIP) 1995 国际信息学奥林匹克竞赛(IOI) 1989 亚太地区信息学奥林匹克竞赛(APIO)2007 #### 人物 冯·诺依曼(Neumann) + "计算机之父",ENIAC和E
阅读全文
摘要:#### t1 火柴 设计 为 跟火柴最多的长度, 为 根火柴应选哪个放在首位。 考虑到前一位的重要性吊打后一位,显然让 尽量大优先,不然就是 取大。考虑记忆化搜索(DP)即可。 ```cpp #include #define i
阅读全文
摘要:不愿忘却。 早知如此绊人心,当初何必相识。 记录了好玩的题目,代码都很好写( [ARC092F] Two Faced Edges tag:tarjan,dfs che 的题解。 tarjan 之后按在不在 scc 上面分讨边,发现要求不含 的路径是否存在。想办法算路径长度 \(>
阅读全文
摘要:记录一下自己如何寄,lsy 不想挂大分的说(( https://www.cnblogs.com/ycx-akioi/p/sb-mistakes.html 负数边权直接贪心假处理了,注意初始值和状态对 0 的取 min。 Floyd 没有写 导致算错,记得初始化嗷。 stl
阅读全文
摘要:又叫做 fail 樹。可愛捏((( 用於求解字符串兩個前綴的最大公共 border。 我們先跑一邊 KMP 算法求出 數組。 我們連出每一個邊 ,嗯嗯為此我們需要新建一個 點。 那這個樹有什麼性質捏,顯然一個節點的祖先都是祂的 border。 額大家都
阅读全文
摘要:```cpp const int bs=233, P=998244353; int hsh(string x) { int val=0, mul=1; for(int i=0; i<x.size(); ++i) { if('0'<=x[i]&&x[i]<='9') val=(val+mul*(x[i
阅读全文
摘要:求无向图割点,割边,双连通分量;求有向图强连通分量,缩点。 ### 强联通分量 ```cpp #include #define MN 4000010 #define pb push_back using namespace std; int n, m, vis[MN], stk[MN], top,
阅读全文
摘要:其实就是套娃。 一块一块维护。 ```cpp int tr[MN]; void add(int x,int y,int v) { for(int i=x; i<=n; i+=i&-i) for(int j=y; j<=m; j+=j&-j) tr[i][j]+=v; } int ask(int x,
阅读全文
摘要:对于一个字符串 , 可以随意把祂头部的放到尾部,这样弄出来最小的字符串 就是 的最小表示( 通过这种方法,我们可以快速搞同构串 qwq 我们先 断环成链,那么就变成了找长度为 的最小子串 我们用 对应 $S[x],...,S[x+n-1
阅读全文
摘要:我们要查询 是不是 的子串 设 ,其中 $j0&&a[j+1]!=a[i]) j=g[j]; j+=(a[j+1]==a[i]), g[i]=j; } for(int i=1, j=0; i0&&(j==n||a[j+1]!=b[i])) j=g[j];
阅读全文
摘要:我视界里最不珂爱的 SGT 代码我是真的自己写不动 所以这个是照着校 O勾 填空题目写的符合自己习惯的代码 我们要动态维护平面里的直线和诸如 这类直线的信息 大概原理不难理解 就是权值线段树对应区间维护的是当前区间的最优解 最优解指的是在这个区间里面最上面的线段 可以完全碾压别的线段那一
阅读全文
摘要:~~详细介绍看心情可能会补~~ ~~放这就是想方便参考顺便水篇博客~~ 我们要维护一个数组的信息,但是我们也要查询历史信息 大概思想是不同线段树相同的部分共用点 每次修改都复制原来点再进行修改,这样肯定不冲突 通过记录不同版本根节点编号来做索引 其实写起来跟普通线段树的区别就是修改的时候需要重新建点
阅读全文
摘要:### 前置芝士 单调队列优化 DP ⌈ 写不动数据结构呜呜呜,先来补这个 ⌋ 对于一个 DP,我们想优化祂的 ⌈ 转移 ⌋ 有些题目的可选状态有以下特征 + 需要寻找最值 + 可选状态区间平移 + 存在可以永久去除的多余状态 感性的讲,可行性是一个滑动窗口,状态两两之间都可以 ⌈ 直接比较出优劣
阅读全文
摘要:很萌很可爱!就是把纸质笔记上 letex 写在这里有亿点慢 ### 线性筛 埃氏筛, ,思路是 ⌈ 标记所有质数的倍数 ⌋ 这样每个合数可能会被标记好几次,我们改进一下,让每个合数只有一种被标记的方式,即 ⌈ 最小质因子 * 常数 ⌋ 具体而言,⌈ 枚举 $2\to
阅读全文
摘要:引入 维护一棵树,支持两种操作 改变边权 | 边权 询问路径中最大权(或其他) BF 的期望是 ,但是容易退化成 ,所以引入树链刨分,这里用轻重链刨分 轻重链刨分 记 表示以 为根的子树的节点个数,那么对于 为的
阅读全文
摘要:### BST 表示点权, 表示当前点, 表示左子树, 表示右子树 在普通二叉树的基础上多一个条件 对于 ,满足 对于 ,满足 $v_x using namespace std; struct node { i
阅读全文
摘要:### 定义 对于两个点,LCA是它们的祖先(或自己)中距离他们最近的点 ### 不妙做法 查询 #### 向上标记 Rt. 一个节点不断往父节点跑,标记节点 另一个节点也是往上跑碰到标记过的就是LCA #### 向上调整 Rt. 深度深的节点往上调,调到深度一样 如果调成一样了第一个
阅读全文
摘要:给定一张 个点、 条边的有向图,求 号点到每个点的最短路径长度。 我们用 表示从点 到点 的最短距离。 + 初始化 为 ,其余为无穷大,搞一个队列并将起点入队 + 取队头 ,遍历它的出边 至
阅读全文
摘要:### 随机数 ``` #include #include srand((unsigned)time(NULL)); ``` 之后可调用```rand()```函数,生产 ~ 的整数 ### 对拍 写三个程序,正解,暴力和数据生成 整出来三个 exe 文件 建一个 bat 文
阅读全文
摘要:#### 定义 若在 意义下,对于一个整数 ,有 ,那么这个整数 即为 的乘法逆元,同时 也为 的乘法逆元。 #### 充要条件 存在模 的乘法逆元的充要条件是 $\gcd(a,p)=1
阅读全文
摘要:## 最长公共子序列 ### 题目描述 给定长度为 的数组 ,长度为 的数组 ,求其最长公共子序列长度 ### DP 表示 前 项和 前 项的最长公共子序列长度 因为如果我们要在序列尾巴上加元素是不跟前面选了什么有关系的
阅读全文
摘要:## 最长上升子序列 ### 题目描述 给定一个长度为 的数列 ,求其最长上升子序列长度 ### DP 表示以 结尾的最长上升子序列 显然有 其中 $1\leq i \leq n,1\leq j\l
阅读全文
摘要:### 01背包 给定 件物品,每个物品有重量 和价值 ,一个物品只有一件,求容量不超过 的背包最多可以装多少价值物品 定义 表示前 件物品在容量不超过 的背包下可以获得的最大价值则有 $f_{i,j}=\max\{f
阅读全文
摘要:动态维护中位数 开一个大根堆一个小根堆,一个用于维护较小的一半的最大值,一个用于维护较大一半的最小值,每次输入之后通过调整堆保证两半区分,时间复杂度为 具体而言,有如下步骤: + 建立一个大根堆 ,一个小根堆 ,中位数 + 对于一个新数 ,
阅读全文