随笔分类 - OI
摘要:前言 CF2139 \(Div.2\) 难度。 由于刚上大学,开学有很多活动,连参加 vp 的时间都挤不出来。 A.Maple and Multiplication 题面 共 \(t\) 组数据,每组数据: 给定两个数 \(a,b\) ,你可以进行任意次操作: 选择一个整数 \(x\) ,然后令 \
阅读全文
摘要:前言 CF2135/CF2136 , \(Div.1/Div.2\) 难度,场切 \(E\) 题,差 \(2\) 分钟切 \(F1\) 。 被 \(A,B\) 题卡了好久,其他题基本上都是迎刃而解 A.In the Dream 题面 共 \(t\) 组数据,每组数据: 给定 \(4\) 个整数 \(
阅读全文
摘要:前言 这次比赛打炸了, C 题磕了好久没做出来,后面不想打了,在 \(0:00\)提前离场。 CF2134 \(Div.2\) 难度,场切 A,B 。 A.Painting With Two Colors 题面 共 \(t\) 组数据,每组数据: 给定 \(3\) 个整数 \(n,a,b\) 问你能
阅读全文
摘要:前言 CF2127 \(Div.1+Div.2\) 难度,场切 \(T1-T3\) A.Mix Mex Max 题面 共 \(t\) 组数据,每组数据: 给定一个长度为 \(n\) 的数组,其中有一些未赋值的元素,标记为 \(-1\) 。 现在你需要确定是否存在一种赋值方式,使得: \(\foral
阅读全文
摘要:前言 CF2128 难度 \(Div.2\) 可惜 E1 没看出是二分。 A.Recycling Center 题面 共 \(t\) 组数据,每组数据: 给定一个大小为 \(n\) 的数组 \(a\) 和一个整数 \(c\) ,你要进行 \(n\) 次操作: 不重复地选择一个下标 \(i\) ,若
阅读全文
摘要:前言 第一次在 \(CodeForces\) 上参加比赛。这次看错时间,晚了 \(15\) 分钟进入比赛,只做出 \(T1-T4\) 。 CF2125 难度 \(Div.2\) A.Difficult Contest 题面 称一个字符串是好的,当且仅当其没有子串 \(FFT\) 或 \(NTT\)
阅读全文
摘要:朴素素数筛 朴素素数筛的想法很简单: 判断一个数 \(p\) 是否是素数,只需从小到大枚举所有小于其的数 \(i\) ,判断 \(i\) 是否是其因数即可。 代码 bool isPrime(int x){ for(int i=2;i*i<=x;++i)if(x%i==0)return 1; retu
阅读全文
摘要:点分治 点分治是一种用于维护树上路径问题的算法。 一个朴素的树上路径算法是 \(\mathit{O}(n^2)\) 的, 显然,我们只需要枚举所有点对即可。 点分治依赖于树的重心, 我们先来复习一下重心 重心的一种定义就是最大子树大小最小的节点。 很容易发现,重心的最大子树大小小于原树大小的一半,
阅读全文
摘要:按边分块 [HNOI2016] 最小公倍数 题意: 一张图, \(n\) 个点, \(m\) 条边, \(q\) 次询问。 每条边有正整数权值 \(val_u\) ,满足 \(\exists a,b\in \mathbb{N},val_u=2^a\times 3^b\) 每次询问给出一个 \(u,v
阅读全文
摘要:基本思想 记:序列 \(a\) 经过 \(FWT\) 变换之后的序列为 \(fwt[a]\) 我们想求 \(c=a\cdot b\) ,而直接运算是 \(\mathit{O}(n^2)\) 的 若 \(a\rightarrow fwt[a]\) , \(b\rightarrow fwt[b]\) ,
阅读全文
摘要:动态DP \({\huge 动态DP}\)是一种 \(DP\) 优化 链上动态DP 例子 我们考虑一个 \(DP\) : 最大不连续子序列和 显然有转移方程: 定义: \(f_{i,0}\) 表示第 \(i\) 位不取的最大和, \(f_{i,1}\) 表示第 \(i\) 位取的最大和 \(\lef
阅读全文
摘要:二叉搜索树 Treap Treap(树堆)是一种弱平衡的二叉搜索树 每个节点有维护的权值 \(val\) ,和随机的优先级 \(priority\) 其满足: 左子节点的 \(val\) 比父节点小 右子节点的 \(val\) 比父节点大 子节点的 \(priority\) 比父节点大(小) 维护T
阅读全文
摘要:考场差点切掉,分类讨论讨论少了,被民间数据卡掉最后两个点。 Update 24/10/27 0:12 初稿 P11232 [CSP-S 2024] 超速检测(民间数据) 一条路,长 \(L\) ,路上有 \(n\) 辆车在行驶,其驶入这条路的坐标为 \(d_i\) ,速度为 \(v_i\) ,加速度
阅读全文
摘要:定义 后缀数组 (Suffix Array) ,由两个数组 \(sa,rk\) 组成。 其中: \(sa_i\) 表示将字符串 \(s\) 的所有后缀按字典序排序后第 \(i\) 小的后缀的编号。 \(rk_i\) 表示后缀 \(s[i...n]\) 的排名。 显然有: \(sa[rk[i]]=rk
阅读全文
摘要:\(MST\),最小生成树 对于一个无向图,每条边有边权,最小生成树即为生成树中边权最小的。 \(Kruskal\) 算法 用一个小根堆存储所有边,每次尝试加入堆顶的边。 时间复杂度 \(O(m\space\log m)\) 时间复杂度主要在排序上,可以使用并查集维护当前所有点组成的森林 \(Bor
阅读全文
摘要:强连通分量 强连通指图 \(G\) 中任意两点 \(u,v\) 可以互相到达 强连通分量则是指极大强连通子图 强连通分量的 \(tarjan\) 算法 通过 \(dfs\) 建出原图的生成树(森林) 每个点打上 \(dfs\) 序,并记录其能到达哪个点 \(dfn_u\) 表示 \(u\) 的 \(
阅读全文
摘要:\(KMP\) 前缀函数 给定一个长度为 \(n\) 的字符串 \(s\) ,其前缀函数定义为一个长度为 \(n\) 的数组 \(\pi\) 。 其中 \(\pi[i]\) 的定义为: 如果子串 \(s[0...i]\) 有一对相等的真前缀 \(s[0...k-1]\) 与真后缀 \(s[i-k+1
阅读全文