08 2023 档案

摘要:plaese kill me. && don't forget me. #### 题目描述 给定 n 个字符串 si 只包含 ```0,1,2```,现在要捏一个序列 Asi 表示 ai 可以捏成什么。```1,2,3``` 形成环形吊打关系,ω(X) 表示 阅读全文
posted @ 2023-08-17 21:03 Hypoxia571 阅读(14) 评论(0) 推荐(0) 编辑
摘要:[link](https://www.luogu.com.cn/problem/P4809) 最无聊的时候写的最~~啰嗦~~详细的题解。 #### 题目描述 给定一个 n×m 的点阵和两类边,第 ij 列的城市我们叫祂城市 (i,j)。 横边:给定 p 个三元组 阅读全文
posted @ 2023-08-14 21:24 Hypoxia571 阅读(28) 评论(0) 推荐(0) 编辑
摘要:#### 第一届竞赛时间 全国青少年信息学奥林匹克竞赛(NOI) 1984 全国青少年信息学奥林匹克联赛(NOIP) 1995 国际信息学奥林匹克竞赛(IOI) 1989 亚太地区信息学奥林匹克竞赛(APIO)2007 #### 人物 冯·诺依曼(Neumann) + "计算机之父",ENIAC和E 阅读全文
posted @ 2023-08-12 23:10 Hypoxia571 阅读(91) 评论(0) 推荐(0) 编辑
摘要:#### t1 火柴 设计 f[i]i 跟火柴最多的长度,g[i]i 根火柴应选哪个放在首位。 考虑到前一位的重要性吊打后一位,显然让 f[i] 尽量大优先,不然就是 g[i] 取大。考虑记忆化搜索(DP)即可。 ```cpp #include #define i 阅读全文
posted @ 2023-08-12 23:07 Hypoxia571 阅读(24) 评论(1) 推荐(0) 编辑
摘要:不愿忘却。 早知如此绊人心,当初何必相识。 记录了好玩的题目,代码都很好写( [ARC092F] Two Faced Edges tag:tarjan,dfs che 的题解。 tarjan 之后按在不在 scc 上面分讨边,发现要求不含 (u,v) 的路径是否存在。想办法算路径长度 \(> 阅读全文
posted @ 2023-08-12 23:06 Hypoxia571 阅读(82) 评论(0) 推荐(0) 编辑
摘要:记录一下自己如何寄,lsy 不想挂大分的说(( https://www.cnblogs.com/ycx-akioi/p/sb-mistakes.html 负数边权直接贪心假处理了,注意初始值和状态对 0 的取 min。 Floyd 没有写 f[i][i]=0 导致算错,记得初始化嗷。 stl 阅读全文
posted @ 2023-08-12 23:05 Hypoxia571 阅读(76) 评论(2) 推荐(1) 编辑
摘要:一坑未填又开一坑。 yyc 的讲课速度我不能接受。 做不到两天速通网络流字符串反演fft。 总是听不懂,脑子要炸裂了捏 /wq A(x)=k=0nA[k]xk 是一个整式。 加法卷积 C[k]=i+j=kA[i]B[j]。 其实差不多就是两个 x 进制 阅读全文
posted @ 2023-08-12 22:59 Hypoxia571 阅读(23) 评论(0) 推荐(0) 编辑
摘要:没有写一些概念(?((( 我是梅比乌斯厨=莫比乌斯厨=牲畜(暴论。 ### 前置芝士 #### 积性分解 对于积性函数 f,给出 n=i=1mpici。有 f(n)=i=1mf(pici)。意思是跟 质因子 & 幂次 相关度较高 阅读全文
posted @ 2023-08-12 22:59 Hypoxia571 阅读(122) 评论(0) 推荐(0) 编辑
摘要:学长讲着讲着就听不懂了,妈妈捏。 60 页讲义、 文章省去了大量的证明(? 流 定义 f[uv]uv 的 ⌈ 流量 ⌋, c[uv]uv 的 ⌈ 流量限制 ⌋,s 为源点,t 为汇点。 合法流的充要条件 反对 阅读全文
posted @ 2023-08-12 22:59 Hypoxia571 阅读(23) 评论(0) 推荐(0) 编辑
摘要:又叫做 fail 樹。可愛捏((( 用於求解字符串兩個前綴的最大公共 border。 我們先跑一邊 KMP 算法求出 nxt[] 數組。 我們連出每一個邊 (nxt[i],i),嗯嗯為此我們需要新建一個 0 點。 那這個樹有什麼性質捏,顯然一個節點的祖先都是祂的 border。 額大家都 阅读全文
posted @ 2023-08-12 22:57 Hypoxia571 阅读(24) 评论(0) 推荐(0) 编辑
摘要:```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 阅读全文
posted @ 2023-08-12 22:57 Hypoxia571 阅读(3) 评论(0) 推荐(0) 编辑
摘要:求无向图割点,割边,双连通分量;求有向图强连通分量,缩点。 ### 强联通分量 ```cpp #include #define MN 4000010 #define pb push_back using namespace std; int n, m, vis[MN], stk[MN], top, 阅读全文
posted @ 2023-08-12 22:56 Hypoxia571 阅读(6) 评论(0) 推荐(0) 编辑
摘要:lucas 定理用于求解模数很的组合数求解,比如模小素数,会遇到不一定互质即没有逆元的情况。 CnmCn/pm/pCnmodpmmodp或者说 (ni,mi)(n,m)p 进制上的 阅读全文
posted @ 2023-08-12 22:56 Hypoxia571 阅读(70) 评论(0) 推荐(0) 编辑
摘要:求解高次同余方程。 给定整数 a,b,p,其中 ap,求一个非负整数 x,使得 axb(modp) 因为 ap,可以乱搞。 令 t=sqrt(q)+1,这里是 c++ 意义上的(雾。 然后搞一波 x=itj,其中 $0\leq j 阅读全文
posted @ 2023-08-12 22:55 Hypoxia571 阅读(10) 评论(0) 推荐(0) 编辑
摘要:求矩形面积并,把矩阵竖着割开,累加。 矩形 (x1,y1,x2,y2) 分成 (x1,y1,y2,1)(x2,y1,y2,1) 两条线,指的是,x=xi(y1xy2) 这样的线,土 1 指的是加上或减去。 需要离散 flower,主要是 阅读全文
posted @ 2023-08-12 22:54 Hypoxia571 阅读(15) 评论(0) 推荐(0) 编辑
摘要:其实就是套娃。 一块一块维护。 ```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, 阅读全文
posted @ 2023-08-12 22:53 Hypoxia571 阅读(6) 评论(0) 推荐(0) 编辑
摘要:费马小定理 p 为素数且 ap,有 ap11(modp) 二次探测定理 p 为素数且 a21(modp),那么 a±1(modp) 素数 p 为素数,那么 p=2 或者 2p阅读全文
posted @ 2023-08-12 22:53 Hypoxia571 阅读(9) 评论(0) 推荐(0) 编辑
摘要:### 定义 俩矩阵 A,B,一个 mn,一个 nu C=AB 计算公式为 c[i][j]=k=0n1a[i][k]b[k][j] + 如果行数和列数相同的矩阵,可以称为方阵 + 如果方阵的对角线元素是 1,其余元素都是 0,那么 阅读全文
posted @ 2023-08-12 22:52 Hypoxia571 阅读(31) 评论(0) 推荐(0) 编辑
摘要:对于一个字符串 S, 可以随意把祂头部的放到尾部,这样弄出来最小的字符串 min{S} 就是 S 的最小表示( 通过这种方法,我们可以快速搞同构串 qwq 我们先 断环成链,那么就变成了找长度为 n=|S| 的最小子串 我们用 x 对应 $S[x],...,S[x+n-1 阅读全文
posted @ 2023-08-12 22:51 Hypoxia571 阅读(9) 评论(0) 推荐(0) 编辑
摘要:我们要查询 A 是不是 B 的子串 设 gi=max{j},其中 $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]; 阅读全文
posted @ 2023-08-12 22:51 Hypoxia571 阅读(4) 评论(0) 推荐(0) 编辑
摘要:我视界里最不珂爱的 SGT 代码我是真的自己写不动 所以这个是照着校 O勾 填空题目写的符合自己习惯的代码 我们要动态维护平面里的直线和诸如 x=t 这类直线的信息 大概原理不难理解 就是权值线段树对应区间维护的是当前区间的最优解 最优解指的是在这个区间里面最上面的线段 可以完全碾压别的线段那一 阅读全文
posted @ 2023-08-12 22:51 Hypoxia571 阅读(16) 评论(0) 推荐(0) 编辑
摘要:~~详细介绍看心情可能会补~~ ~~放这就是想方便参考顺便水篇博客~~ 我们要维护一个数组的信息,但是我们也要查询历史信息 大概思想是不同线段树相同的部分共用点 每次修改都复制原来点再进行修改,这样肯定不冲突 通过记录不同版本根节点编号来做索引 其实写起来跟普通线段树的区别就是修改的时候需要重新建点 阅读全文
posted @ 2023-08-12 22:50 Hypoxia571 阅读(7) 评论(0) 推荐(0) 编辑
摘要:### 前置芝士 单调队列优化 DP ⌈ 写不动数据结构呜呜呜,先来补这个 ⌋ 对于一个 DP,我们想优化祂的 ⌈ 转移 ⌋ 有些题目的可选状态有以下特征 + 需要寻找最值 + 可选状态区间平移 + 存在可以永久去除的多余状态 感性的讲,可行性是一个滑动窗口,状态两两之间都可以 ⌈ 直接比较出优劣 阅读全文
posted @ 2023-08-12 22:49 Hypoxia571 阅读(7) 评论(0) 推荐(0) 编辑
摘要:很萌很可爱!就是把纸质笔记上 letex 写在这里有亿点慢 ### 线性筛 埃氏筛, O(nloglogn) ,思路是 ⌈ 标记所有质数的倍数 ⌋ 这样每个合数可能会被标记好几次,我们改进一下,让每个合数只有一种被标记的方式,即 ⌈ 最小质因子 * 常数 ⌋ 具体而言,⌈ 枚举 $2\to 阅读全文
posted @ 2023-08-12 22:49 Hypoxia571 阅读(18) 评论(0) 推荐(0) 编辑
摘要:引入 维护一棵树,支持两种操作 改变边权 | 边权 询问路径中最大权(或其他) BF 的期望是 O(logn),但是容易退化成 O(n),所以引入树链刨分,这里用轻重链刨分 轻重链刨分 记 SIZEi 表示以 i 为根的子树的节点个数,那么对于 x 为的 阅读全文
posted @ 2023-08-12 22:49 Hypoxia571 阅读(13) 评论(0) 推荐(0) 编辑
摘要:### BST vi 表示点权,x 表示当前点,L 表示左子树,R 表示右子树 在普通二叉树的基础上多一个条件 对于 pL,满足 vpvx 对于 qR,满足 $v_x using namespace std; struct node { i 阅读全文
posted @ 2023-08-12 22:47 Hypoxia571 阅读(12) 评论(0) 推荐(0) 编辑
摘要:前置知识:lowbit运算 lowbit(x) 表示正整数 x 在二进制表示下最低位的 1 跟后面的 0 构成的数值 ,有 lowbit(x)=x & ( ~ x+1) ,即 lowbit(x)=x & x,理由如下: \(lo 阅读全文
posted @ 2023-08-12 22:46 Hypoxia571 阅读(8) 评论(0) 推荐(0) 编辑
摘要:### 定义 对于两个点,LCA是它们的祖先(或自己)中距离他们最近的点 ### 不妙做法 查询 O(n) #### 向上标记 Rt. 一个节点不断往父节点跑,标记节点 另一个节点也是往上跑碰到标记过的就是LCA #### 向上调整 Rt. 深度深的节点往上调,调到深度一样 如果调成一样了第一个 阅读全文
posted @ 2023-08-12 22:45 Hypoxia571 阅读(5) 评论(0) 推荐(0) 编辑
摘要:给定一张 n 个点、m 条边的有向图,求 1 号点到每个点的最短路径长度。 我们用 disi 表示从点 1 到点 i 的最短距离。 + 初始化 dis10,其余为无穷大,搞一个队列并将起点入队 + 取队头 x,遍历它的出边 xyi 阅读全文
posted @ 2023-08-12 22:44 Hypoxia571 阅读(20) 评论(0) 推荐(0) 编辑
摘要:### 随机数 ``` #include #include srand((unsigned)time(NULL)); ``` 之后可调用```rand()```函数,生产 0 ~ 32767 的整数 ### 对拍 写三个程序,正解,暴力和数据生成 整出来三个 exe 文件 建一个 bat 文 阅读全文
posted @ 2023-08-12 22:41 Hypoxia571 阅读(46) 评论(0) 推荐(0) 编辑
摘要:#### 定义 若在modp 意义下,对于一个整数 a ,有 ax1(modp),那么这个整数 x 即为 a 的乘法逆元,同时 a 也为 x 的乘法逆元。 #### 充要条件 a 存在模 p 的乘法逆元的充要条件是 $\gcd(a,p)=1 阅读全文
posted @ 2023-08-12 22:40 Hypoxia571 阅读(16) 评论(0) 推荐(0) 编辑
摘要:## 最长公共子序列 ### 题目描述 给定长度为 n 的数组 a,长度为 m 的数组 b,求其最长公共子序列长度 ### DP f[i][j] 表示 ai 项和 bj 项的最长公共子序列长度 因为如果我们要在序列尾巴上加元素是不跟前面选了什么有关系的 阅读全文
posted @ 2023-08-12 22:38 Hypoxia571 阅读(9) 评论(0) 推荐(0) 编辑
摘要:## 最长上升子序列 ### 题目描述 给定一个长度为 n 的数列 a,求其最长上升子序列长度 ### DP O(n2) f[i] 表示以 i 结尾的最长上升子序列 显然有 f[i]=max(f[i],f[j]+1) 其中 $1\leq i \leq n,1\leq j\l 阅读全文
posted @ 2023-08-12 22:38 Hypoxia571 阅读(9) 评论(0) 推荐(0) 编辑
摘要:给定一张 n 个点、m 条边的有向图,求 1 号点到每个点的最短路径长度。 我们用 disi 表示从点 1 到点 i 的最短距离。 + 初始化 dis10,其余为无穷大 + 找出点 i ,满足 disi 是未标记节点中 dis 值最 阅读全文
posted @ 2023-08-12 22:37 Hypoxia571 阅读(31) 评论(0) 推荐(0) 编辑
摘要:设 f[i][j] 表示从第 i 位开始 2j 的最值 很明显,有 f[i][0]=ai 还有 f[i][j]=max{f[i][j1],f[i+2j1][j1]} ### 预处理 ``` void prevwork() { for(int i=1; i<= 阅读全文
posted @ 2023-08-12 22:36 Hypoxia571 阅读(8) 评论(0) 推荐(0) 编辑
摘要:### 01背包 给定 n 件物品,每个物品有重量 wi 和价值 ci,一个物品只有一件,求容量不超过 m 的背包最多可以装多少价值物品 定义 fi,j 表示前 i 件物品在容量不超过 j 的背包下可以获得的最大价值则有 $f_{i,j}=\max\{f 阅读全文
posted @ 2023-08-12 22:33 Hypoxia571 阅读(14) 评论(0) 推荐(0) 编辑
摘要:动态维护中位数 开一个大根堆一个小根堆,一个用于维护较小的一半的最大值,一个用于维护较大一半的最小值,每次输入之后通过调整堆保证两半区分,时间复杂度为 O(logn) 具体而言,有如下步骤: + 建立一个大根堆 lt,一个小根堆 rt ,中位数 mid + 对于一个新数 x阅读全文
posted @ 2023-08-12 22:25 Hypoxia571 阅读(9) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示