02 2024 档案

摘要:法一:类比基环树中的第二种处理方法 例题:仙人掌最大独立集 处理仙人掌图,可以先考虑在树上怎么做,然后在仙人掌里加一些对环的限制。 所有回边的影响,会在深搜树上的环顶被解决。此后就可以看作普通子树。 用 up[x] 记录 x 的环顶,up[x]=0 表示 x 不属于任 阅读全文
posted @ 2024-02-29 08:58 FLY_lai 阅读(23) 评论(0) 推荐(0) 编辑
摘要:模板题 朱刘算法。先讲不带优化的版本。记答案为 ans。 对于一张图,先把每个结点边权最小的入边选出来。如果有结点没有入边,无解;否则令 ans 累加这些边的边权。 如果选出来的边不构成环,则这些边肯定构成了这张图的最小树形图。 否则考虑这个环。 阅读全文
posted @ 2024-02-28 22:35 FLY_lai 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目描述 题解 考虑黑用 1 表示,白用 0 表示,那么Alice要赢,就意味着每条边 xy 等价于 clr[x]clr[y]。连边也就是 的关系。 不妨编号从 0 开始,题目的染色方式则意味着 \(clr[x] 阅读全文
posted @ 2024-02-28 11:24 FLY_lai 阅读(18) 评论(0) 推荐(0) 编辑
摘要:有两种方法: 最大费用流。 把网络流作为贪心的工具。 建图:原图中的点也当作新图中的点。对于一条原图的边,新图中建两条:一条容量 1 费用 1,一条容量 + 费用 0。(深海机器人的方法)s 向所有入度 0 的点(还有出度 0阅读全文
posted @ 2024-02-28 08:36 FLY_lai 阅读(8) 评论(0) 推荐(0) 编辑
摘要:S1 观察发现,所有靶子右上角必须斜率负数,右下角必须斜率正数,左端点没有要求。先判断斜率中负数和正数的数量是否都达到 n,否则无解。 其次,如果现在有两条线和两个 x 相等的点,斜率较大的线配了 y 较小的点。交换这两个匹配,发现让两个与 y 轴的交点更靠近了。由此 阅读全文
posted @ 2024-02-27 20:58 FLY_lai 阅读(12) 评论(0) 推荐(0) 编辑
摘要:狄利克雷卷积:(fg)(n)=d|nf(d)×g(nd)。两积性函数的狄利克雷卷积还是积性函数。 数列的卷积:(ab)n=i=1nai×bni+1。 数列的二项式卷积:\((a*b)_n=\s 阅读全文
posted @ 2024-02-27 07:51 FLY_lai 阅读(13) 评论(0) 推荐(0) 编辑
摘要:传送门 如果一个排列 P 满足对于所有的 i 都有 |Pii|k,则称排列 P 为合法的。现给出 nk,求有多少种合法的排列。 由于答案很大,请输出答案对 924844033 取模的结果。 \(2\leq n\leq 2\t 阅读全文
posted @ 2024-02-26 22:22 FLY_lai 阅读(14) 评论(0) 推荐(0) 编辑
摘要:传送门 题意:给定两个数组 ai,bi,若 aibj,则他俩可配对。求极大匹配的方案数。(极大不是最大,最大一定是极大) 先考虑最大匹配方案数怎么求。 把 ab 从小到大排序。则每个 ai 能匹配的 b 都是一段后缀,且随着 \ 阅读全文
posted @ 2024-02-26 20:53 FLY_lai 阅读(10) 评论(0) 推荐(0) 编辑
摘要:前四题水。 G 时限五秒,两只 log 都能过。 建线段树,每个结点上面存一个 multiset,包含所有作用到这个结点区间上的修改。 删除直接找到对应 multiset 删除即可。 阅读全文
posted @ 2024-02-25 09:29 FLY_lai 阅读(50) 评论(0) 推荐(0) 编辑
摘要:左偏树是一种可并堆(一系列的堆),支持以下操作: 删除一个堆的最值。 查询一个堆的最值。 新建一个堆,只包含一个元素。 合并两个堆。这个复杂度是 O(log) 的。 左偏树是一颗二叉树。定义 “外结点” 为儿子数量不等于 2 的结点,定义每个结点的 dist 为该结点到最近 阅读全文
posted @ 2024-02-24 17:16 FLY_lai 阅读(6) 评论(0) 推荐(0) 编辑
摘要:只做了 A,成功被 sb 错误卡住。 A 每次挑最右边的左移。 B 每次一定是优先向最近的怪物打,打完一个打下一个最近的。 子弹不一定只能打两个怪物,所以打的时候用循环判断子弹是否打完。 C l = r 不行 否则考虑全 1 再把所有 ci=1 的都 +1,这需要 \(cnt1[r]-cn 阅读全文
posted @ 2024-02-24 08:59 FLY_lai 阅读(36) 评论(0) 推荐(0) 编辑
摘要:CF10E 题解 翻转 性质:如果翻转的区间所有数对个数为偶,则整个逆序对个数奇偶性不变;否则改变。 证明:首先翻转区间外的逆序对个数不会变化,翻转区间与翻转区间外的逆序对个数也不会变化。 假设翻转前翻转区间内有 cnt 个逆序对,则翻转后有 \(len\times (len-1)/2-cn 阅读全文
posted @ 2024-02-20 19:11 FLY_lai 阅读(17) 评论(0) 推荐(0) 编辑
摘要:无向基环树找环,遍历模板: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int inf = 0x3f3f3f3f; int n; vector<int> e[500005]; bool vis[5 阅读全文
posted @ 2024-02-19 11:19 FLY_lai 阅读(14) 评论(0) 推荐(0) 编辑
摘要:【根号分治】 例题:等差数列加 给定一个长度 n 的数列,初始全都是 0。(n2×105) 要求支持两种操作: 1xyd,表示把所有下标模 x 等于 y 的位置全部加上 d2x,表示查询 \(a_x\ 阅读全文
posted @ 2024-02-19 11:01 FLY_lai 阅读(25) 评论(0) 推荐(0) 编辑
摘要:一道练习贪心证明的好题。 绝大多数题解只是点出了以下结论: 要么最快的带最慢的;要么最慢的带次慢的。 并没有给出证明。我就补上这个证明。 为了证明这个贪心结论,我们先证明几个引理。 引理一:每次将火把带回来的,一定是对岸最快的。 引理一证明:如果回来的不是对岸最快的,让对岸最快的人代替这个回来的人的 阅读全文
posted @ 2024-02-19 11:00 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:自己做不出来,看现在题解区的题解讲的都不咋清楚。懂了之后来为后人铺路。而且我的马蜂比较好看 题目传送门 我能看懂这道题,主要是依靠了这篇题解的帮助。 首先我们只关注数的相对关系,所以可以离散化。注意到值域 106,用数组离散化。 这道题可以用贪心做。(有一些定义先往下看) 定义一个无缝子序 阅读全文
posted @ 2024-02-19 11:00 FLY_lai 阅读(11) 评论(0) 推荐(0) 编辑
摘要:传送门 注意题目保证新加入的区间长度一定最大,想一想,这是保证了新区间不会被包含。 区间关系有三种:如果两个区间相交,则两个区间互相可达;如果是包含关系,小的能到大的;如果相离,都不能到。 显然当区间 ab 相互可达,bc 相互可达,则 a,b,c 阅读全文
posted @ 2024-02-19 10:59 FLY_lai 阅读(17) 评论(0) 推荐(0) 编辑
摘要:传送门 先将括号序列建树。 具体而言,假设当前根结点为 rt,当前括号序列为 s。若 s 能分成 cnt 组括号,则 rtcnt 个儿子。对于第 i 个儿子,以它为新根结点,第 i 组括号为新括号序列,递归建树。 例如 (()() 阅读全文
posted @ 2024-02-19 10:58 FLY_lai 阅读(13) 评论(0) 推荐(0) 编辑
摘要:传送门 题意;找出最浅的点分树。 发现这是一个等价问题:给每个结点一个标号,当两个结点标号相同时,它们的路径上必有严格更小的标号。如果找到了这样一种标号方法,每个结点的标号就是它的深度。 同时我们还可以把每个结点的标号 x 对应到 n+1x,也是一一对应。问题又变成路径上必有严格更 阅读全文
posted @ 2024-02-19 10:57 FLY_lai 阅读(5) 评论(0) 推荐(1) 编辑
摘要:传送门 题意简述:给定序列 a,bm 次查询,每次询问 i=lirij=iri(maxk=ijak×maxk=ijbk)。 \(n,m\le 2.5\times 阅读全文
posted @ 2024-02-19 10:56 FLY_lai 阅读(9) 评论(0) 推荐(0) 编辑
摘要:前五题水。 提一嘴 D:应该是 x/n + x/m - 2 * x/lcm(n,m),而不是 x/n + x/m - 2 * x/nm! F 题意: 给定图。每个点有权值 w。初始每个点有 ai 个片。每次操作可以选定一个有片片的点,拿走它的一个片片,然后从它的邻点中选若干个,要求 阅读全文
posted @ 2024-02-17 22:02 FLY_lai 阅读(16) 评论(0) 推荐(0) 编辑
摘要:A 最大值 - 最小值 B 题意:在 n×n 的方阵中选择若干个方块,使得至少有 k 条对角线上有选择的方块。 观察:如果选择第一行的 n 个,和最后一行的中间 n2 个,可以覆盖 4n4 条对角线,这其中每一个格子都恰好覆盖两条对角线。 所以 阅读全文
posted @ 2024-02-16 11:38 FLY_lai 阅读(9) 评论(0) 推荐(0) 编辑
摘要:S1 题解 S2 显然最少次数就是叶子个数 l。那么 pl+1pn 都不会用到。 对于 p1pl,我们要尽量让它们放在路径上。 枚举每一条根到叶子的路径,选择路径上深度最低的 p 与这条路径匹配(没有就不匹配了)。 用树剖即可。 S3 阅读全文
posted @ 2024-02-16 09:40 FLY_lai 阅读(46) 评论(0) 推荐(0) 编辑
摘要:袭击 给出 2n 个点,求在前 n 个和后 n 个点中各选一个点的距离的最小值是多少。 分治 出处:《算法竞赛进阶指南》 题解: 先考虑只有一种点,怎么求两两距离的最小值。 分治,整体的最小距离 ans=min(左半边的最小值,右半边的最小值,左右之间的最小值\() 阅读全文
posted @ 2024-02-15 11:21 FLY_lai 阅读(4) 评论(0) 推荐(0) 编辑
摘要:3n多米诺问题 dp[i] 表示前 i 列的方案数,dp2[i] 表示前 i 列但是最上面一行缺一个的方案数。 dp[i],dp2[i] 可以相互递推,而且刚好是矩阵递推。 矩阵快速幂优化。 CF809D 题解 CF15E 题解 CF17C 题解 CF79D 阅读全文
posted @ 2024-02-15 11:21 FLY_lai 阅读(34) 评论(0) 推荐(0) 编辑
摘要:喵了个喵 题解 磁带存储 有 n 个磁带,每个片段有两个参数:时长 ti 和频率 ai。以某种顺序把片段排在磁带里,每个片段的花费为(播放完这个片段的时刻)乘以(该片段的频率) 求最小花费和。 因为两个片段交换,对之后没有影响。 所以可以考虑一个顺序中,如果 \(x,x+ 阅读全文
posted @ 2024-02-15 11:20 FLY_lai 阅读(45) 评论(0) 推荐(0) 编辑
摘要:菜肴制作 要求把 1n 排序,满足给定的所有条件,满足条件之后,编号越小要越靠前。(满足条件情况下,先让 1 最靠左,然后让 2 ……) 每个条件会给出两个数 a,b,表示 a 必须在 b 之前。 解: 看起来很像拓扑排序。于是我们对于每个条件 \(a,b\ 阅读全文
posted @ 2024-02-15 11:19 FLY_lai 阅读(28) 评论(0) 推荐(0) 编辑
摘要:OI 中的组合,基本指组合计数。组合极值一般是贪心题或者 dp 题。 【组合数】 组合数 Cnm=(mn)。 注意:求逆元前,请一定判断清楚,是否可能不存在逆元!!! Cnm=Cn1m+Cn1m1。 c[n][m] = c[n - 1][m] 阅读全文
posted @ 2024-02-15 11:16 FLY_lai 阅读(9) 评论(0) 推荐(0) 编辑
摘要:数论:研究数与数之间的关系。如带余除法、因数倍数、同余整除等都是数论。 【筛法】 主要使用的筛法有两个:埃氏筛和欧拉筛(线性筛)。 使用筛法的原因很简单:对于一个数,我们要找它的因数不容易;但是对于一个因数,我们找它的倍数很简单。 【埃氏筛】 因为一个数的倍数一定不是质数,且任何数都能分解为若干质数 阅读全文
posted @ 2024-02-15 11:16 FLY_lai 阅读(19) 评论(0) 推荐(0) 编辑
摘要:简单的树上 dp 其实已经在普及组涉及过:自上而下和自下而上传递的性质。 现在我们需要研究更复杂的树上 dp,比如换根 dp 等等。 【树上 dp】 最大子树和 给出一棵带点权的树,求这棵树中的最大权连通块。 因为是无根树,我们人为规定 1 号结点为根。 dp[i] 表示以 i 为根 阅读全文
posted @ 2024-02-15 11:16 FLY_lai 阅读(16) 评论(0) 推荐(0) 编辑
摘要:主要有:剪枝、双向搜索、启发式搜索、迭代加深。 【剪枝】 拼接正方形 一道水题。基本想法:枚举每根木棍属于哪条边,O(4m4!)。 但是这太慢了,我们剪枝:如果一条边目前的累计长度 >sum4,就返回 false。 于是我们就通过了。 运动员最佳 阅读全文
posted @ 2024-02-15 11:15 FLY_lai 阅读(423) 评论(0) 推荐(0) 编辑
摘要:【单调栈】 柱状图最大矩形: 首先我们有一个最简单的方法:O(n3) 枚举左右端点,然后再求中间的最小值,最后乘起来得到这段矩形组成的最大面积。 求最小值,我们考虑到ST表,我们可以用它优化到 O(n2)。 接下来我们考虑转换枚举思路: 我们发现,一个矩形的大小,由它的左右端点, 阅读全文
posted @ 2024-02-15 11:15 FLY_lai 阅读(11) 评论(0) 推荐(0) 编辑
摘要:【前置知识】 运算律,单位元。 运算律基本就是交换律、结合律、分配律。 单位元: 假设我们现在有一个运算 。 如果 ab=ba=a,称 b 是运算 的单位元。 【线段树】 线段树是一个树形数 阅读全文
posted @ 2024-02-15 11:10 FLY_lai 阅读(22) 评论(0) 推荐(0) 编辑
摘要:【引入】 分(而)治(之)。 把一个问题分解成规模更小的子问题,从而降低复杂度的算法。 【归并排序】 我们用选择排序,复杂度是 O(n22)。 但是如果我们把数组分成两半,分别选择排序,再归并起来,复杂度就降低为 O(n24+n),几乎快了一半 阅读全文
posted @ 2024-02-15 11:09 FLY_lai 阅读(10) 评论(0) 推荐(0) 编辑
摘要:【双指针】 双指针(two-pointer method) 这里的指针不是指向内存地址的指针,而是一个类似于光标的、指向一个位置的指针。 双指针是一个优化时间复杂度的思想。 【例子1】 两数之和 二重循环当然可以,但是太慢了。 于是我们可以使用双指针优化。 样例: 7 7 1 3 4 8 6 9 5 阅读全文
posted @ 2024-02-15 11:08 FLY_lai 阅读(14) 评论(0) 推荐(0) 编辑
摘要:【什么是网络流】 一张带权图,给定了一个源点(起点)和一个汇点(终点)。 每个点比作一个中转站,源点比作一个水源,汇点比作一个洞。 每条边比作一条管道,边权比作上限。 现在要把水从源点输送到汇点,水经过若干中转站和管道到达汇点。 但是,每条管道单位时间内输送的水不能达到这条管道的上限(权)。 每个中 阅读全文
posted @ 2024-02-14 11:24 FLY_lai 阅读(23) 评论(0) 推荐(0) 编辑
摘要:忘记打了,VP 了一把,前五题都是板子。 F 题意:坐标系上给定一个整点 (x,y),求另一个整点 (a,b),满足 (0,0),(x,y),(a,b) 组成的三角形面积为 1(或说明无解)。 题解:由这三个点组成的三角形面积为 \(\dfrac{|ay-bx|}{2 阅读全文
posted @ 2024-02-14 10:08 FLY_lai 阅读(12) 评论(0) 推荐(0) 编辑
摘要:【无向图三元环计数】 定义一个有向图 G:把 G 中每条边改成从度数小的点指向度数大的点 的有向边。 性质:G 中每个点的出度 2m。 证明:若 u 的出度 >2m,则显然 u 在原图中的度数 \(>2\sq 阅读全文
posted @ 2024-02-09 09:36 FLY_lai 阅读(63) 评论(0) 推荐(0) 编辑
摘要:ABCDE 赛时 AC。 F 列方程:fi,j 表示有 i 个人,第 j 个人最终活下来的概率。 fi,1=12fi,i,因为只有一种可能:第一个人放到最后,概率是 12,这个时候就相当于让 i 阅读全文
posted @ 2024-02-08 18:43 FLY_lai 阅读(45) 评论(0) 推荐(0) 编辑
摘要:ABCDF 都赛时做出来了。 E \(\displaystyle\dfrac{1}{D}\sum_{i=1}^D (x_i-\overline{x})^2=\dfrac{1}{D}(\sum_{i=1}^D x_i^2-\sum_{i=1}^D2x_i\overline x+\overline{x} 阅读全文
posted @ 2024-02-08 18:43 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:E 题意: 给定一个 n 面骰,长度 n 的数组 a 和一个初始为 0 的变量 x。 每次投掷骰子,等概率获得 1n 中的一个数 p。若 px,结束;否则 xp 且总收获 \(S\lef 阅读全文
posted @ 2024-02-08 18:43 FLY_lai 阅读(9) 评论(0) 推荐(0) 编辑
摘要:F 每次相当于创建一个包含 pi,qi 各自所在集合的点的大点 u,然后 upi,qi 各自所在集合连边,边权就是胜率。 连完之后求每个点到根结点({1n})的路径边权和。 G 定义 Li 为杀至少 i 个怪物至少 阅读全文
posted @ 2024-02-08 18:42 FLY_lai 阅读(11) 评论(0) 推荐(0) 编辑
摘要:前三题过水。 D题 与 5+*的题解 注意:交互题每输出一次,就要 fflush(stdout); 一次 E 其实不是太难,但是赛时一直在搓 D 还没搓出来 首先如果有两个大于 1 的数相邻,就无限次, 否则一定有限次。 手玩几个样例,发现每迭代一次,最右边的非 1 的数会往右移一位 阅读全文
posted @ 2024-02-08 18:41 FLY_lai 阅读(9) 评论(0) 推荐(0) 编辑
摘要:前三题氵 D 给定一个由 (,?,) 组成的字符串。每个 ? 可以设定为任意括号。求有几种设定方法使得整个是合法括号序列。 套路,dp E 给定 n 个两两不相交的长方体,对每个长方体,求有多少个长方体与其有公共面。 有一个可以大幅度优化代码麻烦程度的小技巧:因为坐标范围很小,我们直接把每个 阅读全文
posted @ 2024-02-08 18:40 FLY_lai 阅读(4) 评论(0) 推荐(0) 编辑
摘要:前四题过水 E 枚举正方形的上边界所在行。对于第 i 行一个没洞的位置 (i,j),我们尝试求出以它为右上角的无洞正方形个数。 结论:设以 (i,j1) 为右上角的无洞正方形边长最大为 len,那以 (i,j) 为右上角的无洞正方形边长最大为 \(len + 阅读全文
posted @ 2024-02-08 18:40 FLY_lai 阅读(9) 评论(0) 推荐(0) 编辑
摘要:E dp[i][j] 表示前 i 个里有多少个后缀答案为 jif(c[i]==0){ dp[i][0]=1; dp[i][1]=dp[i1][0]+dp[i1][1]; } else{ \ 阅读全文
posted @ 2024-02-08 18:40 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:直接从 F 开。 F 三维偏序。 把盒子按 hi 排序,离散化,正常跑三维偏序(注意不能相等)。 还要处理 hi 相等的情况,可以再把 hi 从大到小排序,然后 wi,di 都要求严格大于,如果发现有一种情况是无论 hi 咋排序都可以的,就删掉这种 阅读全文
posted @ 2024-02-08 18:39 FLY_lai 阅读(8) 评论(0) 推荐(0) 编辑
摘要:前三题过水。 D dp[i][j] 表示吃完前 i 个菜,胃的状况为 j0 是健康,1 是不好)所获得的最大美味值。 E 暴力的平衡树。用 multiset 也行,一个记录前 k 大的,一个记录除了前 k 大之后的所有数。 每次修改看看是从哪 阅读全文
posted @ 2024-02-08 18:39 FLY_lai 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目列表 前三题过水,第四题分类讨论两个端点之间的距离和所在位置是清醒或睡眠 即可。 E 题意:一张图上有一些结点有保安,每个保安有不同的警戒度 hi,定义 一个结点是安全的 为这个结点可以到达一个保安 x,且距离 x。 问有多少个安全的结点。 痛失第五题 很简单 阅读全文
posted @ 2024-02-08 18:39 FLY_lai 阅读(4) 评论(0) 推荐(0) 编辑
摘要:T4 在一个平面上有一块面积无限的蛋糕,给出 n 颗草莓的所在位置和 a(b) 条平行与 x(y) 轴的切刀位置。 切刀会把蛋糕沿 x(y) 轴切开。因此一共会切出 (a+1)(b+1) 块蛋糕。 问:现在蛋糕上草莓数量最少的一块蛋糕,草莓数量是多 阅读全文
posted @ 2024-02-08 18:38 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:比赛 理理思维 第一反应居然是分块而不是线段树? 线段树解法:因为只有 26,所以每个节点开一个桶完全可以,操作一二不提,操作三只需要多次查询,然后多次赋值即可。 分块解法:操作一不提,操作二懒标记,操作三枚举 26 字母算 cnt,然后桶排(可以用操作一)。同时做一点优化: 阅读全文
posted @ 2024-02-06 08:54 FLY_lai 阅读(19) 评论(0) 推荐(0) 编辑
摘要:【树状数组是什么】 树状数组(Binary Indexed Tree, BIT) 支持单个元素修改 和 前缀查询。 比较一下: 子段和 修改单个元素 数组 O(n) O(1) 前缀和 O(1) O(n) 树状数组 O(logn) O(logn) 阅读全文
posted @ 2024-02-05 14:35 FLY_lai 阅读(6) 评论(0) 推荐(0) 编辑
摘要:【朴素 LCA】 LCA 是树的一个重要概念,意为两结点的最近公共祖先。 先给出朴素求 LCA 的代码。 int get_LCA(int u, int v) { if (d[u] > d[v]) swap(u, v); while (d[u] != d[v]) v = p[v]; while (u 阅读全文
posted @ 2024-02-05 14:32 FLY_lai 阅读(11) 评论(0) 推荐(0) 编辑
摘要:【倍增算法】 先来介绍一些倍增。 倍增是用来加速枚举过程的算法。 一般可以把算法变成 log 级别 O(n)=>O(logn)。 举个栗子。 这里有一个小人,他想去右边的目标,但是他并不知道这个目标有多远。 不过他知道目前自己是在终点的左边还是右边。 我们说,他可以一步一步走, 阅读全文
posted @ 2024-02-05 14:31 FLY_lai 阅读(30) 评论(0) 推荐(0) 编辑
摘要:【最小生成树是什么】 在一张图 G(设 n 个结点)中,选取 n1 条边,用这些边把结点之间连通。 那么这 n1 条边和原来的结点所构成的图 S,就叫做 G 的生成树。 最小生成树,就是希望 S 中边权的和最小。 而求最小生成树,有两种比较 阅读全文
posted @ 2024-02-05 14:30 FLY_lai 阅读(18) 评论(0) 推荐(0) 编辑
摘要:【并查集是什么】 并查集是用来表示一些不相交集合的算法。 它可以很快地处理两个点之间是否在一个连通块中。 【并查集的特点】 动态合并集合; 合并之后就不能拆开了。 并查集开始前,先按顺序把初始集合编号。 (初始也不一定每个都是单个元素) 【并查集的实现】 数据结构分类:抽象结构、存储结构。 抽象结构 阅读全文
posted @ 2024-02-05 14:27 FLY_lai 阅读(34) 评论(0) 推荐(0) 编辑
摘要:A 先判断初始行不行,再模拟加入。 B 题意:数轴上给定一些线段,和点 t。问能否删去一些线段,使得 t 变成唯一的覆盖次数最多的点。 差分 + 贪心。 C 有 n 杯水,n 个人。每杯水有水量上限,每个人有喝水上限。初始第 i 个人对着第 i 个杯子 阅读全文
posted @ 2024-02-05 14:21 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:A 分类讨论。 B 二分。 C 题意:给定一个字符串 s。记 si 为将 s 删去 i 个字符,使得剩余字符串字典序最小得到的字符串。令 S=s0+s1++ssz1。现在要询问 S[pos] 是哪个字符。 通过一些取模,加减可以 阅读全文
posted @ 2024-02-05 14:21 FLY_lai 阅读(3) 评论(0) 推荐(0) 编辑
摘要:A:氵 B:排序对两个偶数没影响,对两个奇数没影响。唯一的影响是可能原本偶数在后面,调到前面贡献变多。所以把所有偶数弄到前面就行。 C:dp[i] 表示前 i 个字符以第 i 个字符结尾,有多少个子串符合条件。 若 s[i]=?dp[i]=dp[i1]+1 阅读全文
posted @ 2024-02-05 14:20 FLY_lai 阅读(3) 评论(0) 推荐(0) 编辑
摘要:A 氵 B 如果 11 后出现了 00 就不行。 C 枚举走几段。 横竖可以分开算。 一定是:除了费用最小的都是走长度 1,费用最小的包揽剩下的。 D clcm(a,b)dgcd(a,b)=x \(c\cdot \dfrac{a}{gcd(a,b)}\cdo 阅读全文
posted @ 2024-02-05 14:20 FLY_lai 阅读(6) 评论(0) 推荐(0) 编辑
摘要:传送门 A: 一个组 2n+21++2n21,另一个组剩下的。 B: 考虑不停循环。 如果不同的数字超过 k,无解。 否则先把原序列去重,然后把末尾补一些数补成 k 个,再把这个新序列循环 n 次。 C: 先把字符们排序。 肯定 阅读全文
posted @ 2024-02-05 14:20 FLY_lai 阅读(11) 评论(0) 推荐(0) 编辑
摘要:A 用计算器式显示数字,可以显示 n 段。可以显示的最大数字是多少? 如果用了一个需要至少四段的数字,一定不如把这个替换成两个 1 好。 如果一共可以用偶数个,一定是全部 1。 如果一共可以用奇数个,一定是开头一个 7,之后全是 1。 B 给定一个 \(01\ 阅读全文
posted @ 2024-02-05 14:20 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:A 题意:你在数轴原点。有一个宝箱在 x,钥匙在 y。每移动一单位,耗费 1 时间。你可以到了 x 然后抱着宝箱走,但是抱着宝箱走的总路程不能超过 k 单位。如果某时刻你、钥匙、宝箱在同一个单位上,就能开宝箱。问:最快要多久开宝箱? 要么是拿钥匙,向宝箱走;要 阅读全文
posted @ 2024-02-05 14:19 FLY_lai 阅读(12) 评论(0) 推荐(0) 编辑
摘要:只做出 A,身败名裂 A 显然不管怎么排,13,31 总有一个会出现,看看哪个出现。 B 给定两个 01 串,每次可以挑一个串的一个子串,要求两端相同,然后把这个子串全部变得和两端相同。 问经过若干次操作,能否使两个串相同。 重要性质:如果能变相同,存在一种方案,任意两次操作的子串都不相交。 证明: 阅读全文
posted @ 2024-02-05 14:19 FLY_lai 阅读(7) 评论(0) 推荐(0) 编辑
摘要:A 让 c 保存数组中所有最大的数,如果所有数都相等则 1。 B 只需要记录每个序列的最小值和次小值,然后对次小值求前后缀和。 C 枚举最大值 mx,然后遍历 i:n1。对于 i,取最大数 x 满足 x 未选且 \(i\times 阅读全文
posted @ 2024-02-05 14:19 FLY_lai 阅读(10) 评论(0) 推荐(0) 编辑
摘要:传送门 A 氵 B 在吃了五次罚时后,我终于放弃了卡常优先队列,并发现:把余 0 看作余 k,答案就是余数从大到小排列的,每种余数内部又按照下标排序。 C 我为什么没想到哈希?自我检讨:见到关于字符串判定相等/不同个数时,一定要尝试用哈希!!! 记前缀 [0,i) 的哈希值为 阅读全文
posted @ 2024-02-05 14:18 FLY_lai 阅读(6) 评论(0) 推荐(0) 编辑
摘要:你谷的加题速度实在太慢了 被 CF 的题目薄纱 A 可以选任意次 i[1,n],使 a[1i]++,a[i+1n]。求最少操作次数使得原数列变成非从小到大排序的。 首先判断原数列是否已经非排序。然后看每一个相邻位置 a[i],a[i+1],令 阅读全文
posted @ 2024-02-05 14:17 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:A 比两边和的大小即可。 B 显然如果一个数拥有的所有二进制位的 1 被包含在 x 中,选了一定不会导致不能变成 x;如果有一个 1x 对应的位上是 0,则一定不能选。 因此从三个栈上面看,只要所有 1 对应到 x 上也是 1 阅读全文
posted @ 2024-02-05 14:16 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:A 氵 B 把奇数和偶数拿出来分别排序,然后按下标归并,看看得出的结果是不是排好序的。 C 如果头尾同色,就找有没有 k 个位置和头尾同色; 否则从头找 k 个和头同色的,然后再在这之后找 k 个和尾同色的。 D 把每个前缀和相邻的相减,得出的结果: 有大于 n 的, 阅读全文
posted @ 2024-02-05 14:16 FLY_lai 阅读(2) 评论(0) 推荐(0) 编辑
摘要:A 给出一个由 1,1 组成的序列。一次操作可以让一个数变相反。 要多少次操作,才能让整个序列和非负且积等于 1。 大 氵题。 B 定义两个数 A,B 有一个价值:每一位上的数字的差的绝对值相加。(位数不足用前导零补齐) 给出区间 l,r,问在 [l,r] 阅读全文
posted @ 2024-02-05 14:15 FLY_lai 阅读(48) 评论(0) 推荐(0) 编辑
摘要:A 题意:给一个长度为 n 的全是 1 的数列,Alice 先操作,Bob 交替。每次操作选择至少两个(可以更多)相等的数字,删除它们,在序列中加入它们的和。直到有人不能操作为止,这个人就获胜了。 问:谁有必胜策略? 很简单的结论题。 如果 n5,Alice 把 \ 阅读全文
posted @ 2024-02-05 14:15 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:A 只要不是全 1 即可。 B 二分完成天数。 C x 取差的 gcdan+1 见缝插针。 D 用一个 map 记录按原始操作序列,要走到 (x,y) 的所有可能前缀。同时 px[i] 记录走了前 i 步到的 x 坐标,\(py 阅读全文
posted @ 2024-02-05 14:14 FLY_lai 阅读(8) 评论(0) 推荐(0) 编辑
摘要:A 若 k>1,冒泡排序;否则判断是否已经有序。 B 初始令 ai=2301,然后对于每个限制,让 aiai&Mi,j,ajaj&Mi,j。 C 答案可以视作:总和 + 一个后缀 + 一个短 阅读全文
posted @ 2024-02-05 14:14 FLY_lai 阅读(3) 评论(0) 推荐(0) 编辑
摘要:A 模拟。 B 模拟。 C 若原字符串中出现次数最多的次数为 cnt,答案是 max(n%2,cnt×2n)。 D 二分 k,然后从后往前倒,计算出到达每个线段可能到的区间。 E a+b+c 不能进位,否则 digitsum() 就会至少 \ 阅读全文
posted @ 2024-02-05 14:13 FLY_lai 阅读(6) 评论(0) 推荐(0) 编辑
摘要:C 先用桶记录各个位数量。 对于每次询问,从低位到高位扫,先用掉一个当前位的,然后把当前位的全部转化成 cnt/2 个更高位的。 D 有一个思路:其实删区间可以视作删相邻两个数。(然鹅这题不是按这个思路做的) 考虑整个序列最小值,它一定不会被删。 这个最小值把序列剖成两半。递归进入左右分别计 阅读全文
posted @ 2024-02-05 14:13 FLY_lai 阅读(2) 评论(0) 推荐(0) 编辑
摘要:重点在 E B 如果 lcm(a,b)b,则是一个答案。 否则答案是 b×ba。 C 先前缀和。设前缀和 si。考虑 si 减去多少个 1。 若 i=1,直接就是答案; 否则答案会减去 si/3,若 阅读全文
posted @ 2024-02-05 14:12 FLY_lai 阅读(15) 评论(0) 推荐(0) 编辑
摘要:多次判断 x 是否是 y 的祖先: 对每一个点,增加两个属性: 刚搜到这个点的时间戳,和回溯这个点的时间戳。 xy 的祖先,等价于 x 开始到结束的区间 包含 y 开始到结束的区间。(如[1,7]包含[2,3],则\([1,7]\ 阅读全文
posted @ 2024-02-05 14:10 FLY_lai 阅读(7) 评论(0) 推荐(0) 编辑
摘要:【概念】 都是无向图的概念 支配集:一个点集,使得无向图中每个点要么是点集中的点,要么与点集相邻。 独立集:一个点集,使得点集中任意两点不相邻。 以上两个在任意图中都是 NP 问题,也就是无法在多项式时间内求解的问题。 点覆盖:一个点集,使得所有边都至少与点集中一个点相连。 结论:点覆盖的补集是独立 阅读全文
posted @ 2024-02-02 09:08 FLY_lai 阅读(68) 评论(0) 推荐(0) 编辑
摘要:定义 概率:P(A),表示事件 A 发生的可能性。 全概率公式:若 B1Bn 构成一个完备事件组(即恰好覆盖了所有可能性的事件组),则 P(A)=P(A|Bi)P(Bi)。 期望:记作 E(x),其中 x 是一个随机变量。如 阅读全文
posted @ 2024-02-01 14:57 FLY_lai 阅读(72) 评论(0) 推荐(0) 编辑
摘要:【Trie 树】 我们试图给每一个字符串一个对应的值。但是由于字符串长度不定,也不是数字,所以不能用数组。 有几种办法: STL map,二叉排序树(平衡树),O(log(n)len)len 为字符串长度。 Trie,插入删除查询都是 O(len) 的。但是 阅读全文
posted @ 2024-02-01 09:49 FLY_lai 阅读(14) 评论(0) 推荐(0) 编辑
摘要:【最小表示法】 最小表示法 循环表示:从一个位置开始向后遍历,到末尾再倒回去最前面。一个字符串(数组)一共有 n 个。 最小表示法就是最小的循环表示。 例如,3 1 4 9 1 的最小表示法是 1 3 1 4 9. 如果我们用打擂台比大小的方式,因为字符串之间比较需要时间,总共是 \(O(n 阅读全文
posted @ 2024-02-01 09:47 FLY_lai 阅读(14) 评论(0) 推荐(0) 编辑
摘要:最小斯坦纳树 给定 k 个关键点必须选,选一些点,选一些边连接他们,求总边权最小。 首先最终肯定选出一棵树。看到 k 的范围,果断状压。 dp[i][S] 表示以 i 为根,至少(不是恰好)包含 S 中的关键点的最小边权总和。 如果最终的树中 i 的度 阅读全文
posted @ 2024-02-01 09:46 FLY_lai 阅读(24) 评论(0) 推荐(0) 编辑
摘要:【哈希】 哈希可以分成两块:哈希函数和哈希表。 哈希函数是一种对应关系,它可以把任意类型映射为一个不太大的整数。 例如字符串,我们可能希望在字符串上记录一些属性。但是字符串不能当下标,那我们就只能加个大常数用 map。 这时,哈希函数出场了!如果我们有一个哈希函数 h() 可以把一个字符串 阅读全文
posted @ 2024-02-01 09:46 FLY_lai 阅读(21) 评论(0) 推荐(0) 编辑
摘要:【什么是虚树】 OI-wiki 如果题目里有一些关键点,而整棵树规模过大,我们可以考虑使用虚树来重新建树,以减少树的规模。 虚树:一颗树,树中包含所有关键点,以及任意多个关键点的 LCA。 可以发现在这颗虚树中,任意两个关键点的 LCA 都不变(还是对应原树的结点),并且只要我们把虚树中每条边的距离 阅读全文
posted @ 2024-02-01 09:44 FLY_lai 阅读(15) 评论(0) 推荐(0) 编辑
摘要:郑哥狂喜 引入:静态区间第 k 小。给定一个数组和若干个询问,每次询问要查询某个区间中第 k 小的数。 这里介绍一种整体二分的算法。 如果只有一个询问,有一种二分的算法: 初始左右端点设为整个数组的最小值和最大值,不断二分。看一下二分值 mid,比 mid 小的数有 \(t\ 阅读全文
posted @ 2024-02-01 09:42 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:【定义】 知识:向量组、线性空间、线性相关性。 向量组:一组向量,各个维数相等。 线性表示:如果一个向量能被一个向量组中若干个向量乘上系数后相加得到,称这个向量可被此向量组线性表示。 (例如向量组 s=(v1,v2)tmp=2v1+3v2,则 tmp 可被 s 线性 阅读全文
posted @ 2024-02-01 09:41 FLY_lai 阅读(37) 评论(0) 推荐(0) 编辑
摘要:这是一种线段树的高级玩法:在时间轴上运用。每个时间节点作为一个叶子,在一个时间区间内的标记,就可以影响到这个区间内的所有时刻。 题目传送门 建立一颗基于询问的线段树,也就是说线段树的每个结点都代表区间内的一些询问。 因为删除操作不好搞,我们反向考虑,求每个询问存在哪些边。 我们可以对每条边,求出它是 阅读全文
posted @ 2024-02-01 09:41 FLY_lai 阅读(6) 评论(0) 推荐(0) 编辑
摘要:我们想要求一个分数,尽可能逼近一个小数。 【法一:分数二分】 利用 ab<a+cb+d<cd,一开始只需要让 [ab,cd] 中有答案就行,然后不断判断 \(\dfrac{a+c}{b 阅读全文
posted @ 2024-02-01 09:40 FLY_lai 阅读(35) 评论(0) 推荐(0) 编辑
摘要:可并堆:一种支持插入、删除、修改、删除任意一个元素、求 min 还有合并的数据结构。 下面的只讲可并堆中的一种:左偏树。 左偏树是二叉树,但并不是完全二叉树。它满足两个性质:① 每个结点的权值都小于等于儿子。② 每个结点 dist(L)dist(R)L,R 分别是 阅读全文
posted @ 2024-02-01 09:39 FLY_lai 阅读(17) 评论(0) 推荐(0) 编辑
摘要:例题:CF600E 有一种暴力的想法是先 DFS 每个结点,再对每个结点 DFS 它的子树,用 cnt 数组记录每个结点子树的颜色出现情况。复杂度 O(n2)。 一个平平无奇的优化:第一层 DFS 的时候,把重儿子放到最后搜索。在搜索重儿子的子树后,不清空 cnt 数组。然 阅读全文
posted @ 2024-02-01 09:36 FLY_lai 阅读(7) 评论(0) 推荐(0) 编辑
摘要:【基本概念】 第一类斯特林数:[nk]:把 n 个数放入 k 个环中,本质不同的方案数。(要求每个环非空,环之间不区分,环可旋转) 递推公式:\([nk]=(n-1 阅读全文
posted @ 2024-02-01 09:35 FLY_lai 阅读(152) 评论(0) 推荐(0) 编辑
摘要:有 n 个 01变量 x1xn,同时有 a1an,b1bn. 同时有约束条件:用集合 S 表示,这个 S 中每一个元素表示一个 x1xn 的取法。(平时见到的题不咋有约束) 我们要给 \(x_1\ 阅读全文
posted @ 2024-02-01 09:33 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:积性函数 【定义】 若对于一个数论函数 f,有: 对 (a,b)=1,有 f(a×b)=f(a)×f(b), 称 f 是一个积性函数。 特别地,若对于任意数 a,b,有 \(f(a\times b)=f(a)\times f(b) 阅读全文
posted @ 2024-02-01 09:31 FLY_lai 阅读(26) 评论(0) 推荐(0) 编辑
摘要:前置:积性函数与狄利克雷卷积 和 整除分块 两个基础积性函数:ε(n)=[n=1]1(n)=1。 性质:εf=ff 是任意函数。 结论:f(n) 是积性函数 \(\iff g(n)=\displaystyle\su 阅读全文
posted @ 2024-02-01 09:29 FLY_lai 阅读(21) 评论(0) 推荐(0) 编辑
摘要:常搭配莫反食用。莫比乌斯反演笔记 P2261 余数求和 求 i=1nkmodin,k1e9。 第一步:kmodi=kiki,\(\text{原式}=\ 阅读全文
posted @ 2024-02-01 09:17 FLY_lai 阅读(13) 评论(0) 推荐(0) 编辑

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