自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 收藏
  • 关注

原创 模板 - treap平衡树

关于删除操作中左旋、右旋的问题。某个点旋一次就能降低一层,log次到达根节点,旋到根节点再删。旋的时候也要保证旋完以后保证这个val的大根堆性质,虽然旋完x这个点后x的val肯定比y的val要大,但是x这个点是要被删掉的点,所以暂时的不合法状态时没问题的,因为最后一定会变为合法状态。保证其它的点合法就行。总而言之,就是旋上去的点一定得是val值最大的。

2024-08-07 17:25:32 200

原创 模板 - 主席树

找第k小类似于二分思想,左半边如果数字个数

2024-08-06 17:25:28 263

原创 模板 - 可持久化trie

将当前版本与上一版本比较,除当前修改外,其余直接继承上一版本。

2024-07-30 16:01:33 226

原创 模板 - 区间乘&区间加

【代码】模板 - 区间乘&区间加。

2024-07-29 19:47:16 128

原创 模板 - st表

【代码】模板 - st表。

2024-07-24 21:48:42 120

原创 lca 模板

【代码】lca 模板。

2024-04-01 21:48:50 138

原创 斜率优化dp 笔记

有 N 个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变。机器会把这 N 个任务分成若干批,每一批包含连续的若干个任务。从时刻 00 开始,任务被分批加工,执行第 i 个任务所需的时间是 Ti。另外,在每批任务开始前,机器需要 S 的启动时间,故执行一批任务所需的时间是启动时间 S 加上每个任务所需时间之和。一个任务执行后,将在机器中稍作等待,直至该批任务全部执行完毕。也就是说,同一批任务将在同一时刻完成。每个任务的费用是它的完成时刻乘以一个费用系数 Ci。

2024-03-28 21:49:40 827

原创 数位dp 笔记

小技巧1:求区间[X, Y]可以转换为求F(Y) - F(X-1)F(X)表示0~X中满足条件的数字个数小技巧2:可以用树的形式来看遍历最高位,每一位分为两种情况:未达到上界和达到上界如果走到右边最底端需加1。

2024-03-04 19:53:09 975

原创 树形dp 笔记

给定一棵树,树中包含 n 个结点(编号1~n)和 n−1 条无向边,每条边都有一个权值。现在请你找到树中的一条最长路径。换句话说,要找到一条路径,使得使得路径两端的点的距离最远。注意:路径中可以只包含一个点。

2024-02-15 23:27:20 1056

原创 区间dp 笔记

区间dp一般是先枚举区间长度,再枚举左端点,再枚举分界点,时间复杂度为。

2024-02-10 23:29:55 1706

原创 2024牛客寒假算法基础集训营1

找dfs这三个字符即可。

2024-02-04 15:26:51 695

原创 状态压缩 笔记

棋盘式的f[i][j]中表示状态的j可以是状态本身也可以是在合法状态state中的下标用状态本身比较方便,用下标比较省空间用下标的话可以开id[M]数组记录一下。

2024-02-01 18:17:54 1749

原创 Educational Codeforces Round 161 (Rated for Div. 2)A~E

问能否构造一个匹配串能和a、b匹配却不能和c匹配。如果a和b某一位置上字母相同且和c这一位置上字母不同的话一定能构造出来还有如果a、b、c某一位置上字母都不同的话匹配串放c这一位置上的大写字母也一定能构造出来。

2024-01-19 23:19:29 452

原创 AC自动机 模板

核心思路是kmp的拓展,只是i++、j++什么的转换成了树的形式,初始化用bfs,每一点的初始化都是借助于该层以前的层进行的。ne[t]是回溯一次,tr[ne[t]][i]直接记录好了它下一个点的位置,存在儿子就到儿子,没有儿子就是记录的回溯好的点。每个点的ne都被计算了。

2024-01-12 14:57:12 539

原创 状态机模型 笔记

给定一个长度为 N的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润,你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。一次买入卖出合为一笔交易。

2023-11-29 21:44:31 973

原创 最长上升子序列模型 笔记

【代码】最长上升子序列模型 笔记。

2023-11-15 19:26:49 221

原创 数字三角形模型 笔记

每一个状态可由四种状态转换来,分别为。f[k][i1][i2]来表示。第一条路走下,第二条路走下。第一条路走下,第二条路走右。第一条路走右,第二条路走下。第一条路走右,第二条路走右。

2023-11-13 21:43:47 250

原创 背包模型 笔记

【代码】背包笔记。

2023-11-02 21:04:54 173

原创 取石子

每一堆数量都>1的话可以把合并操作和取石子看成一种操作,总操作数就是sum+n-1,为奇数就是Alice先手必胜,哪怕有一堆是2,Bob取后变为1,Alice也可以通过合并操作让1变成>1的数。可以分成两大板块a、b, a中方石子个数为1的,b中放石子个数>1的(合并操作也算进去),3、a中合并一次,如果此时b为0->f(a-2,b+2),b非0->f(a-2, b+3)4、b中合并一次->f(a,b-1)//与2式子相同,可化简为同一步。5、a与b合并一次->f(a-1,b+1)接下来记忆化搜索即可。

2023-10-30 21:08:40 246

原创 破译密码 - mobius函数 + 整数分块

mobius函数可以与容斥结合起来,比如mobius[2] = -1, mobius[3] = -1, mobius[2 * 3] = 1。对应容斥里面的加奇减偶。然后用整数分块的思想降低时间复杂度,在一个区间内(A/i) * (B/i)的值是固定的,可以看成一个常数,此时mobius函数可以用前缀和来降低时间复杂度。用容斥的思想:全部的组合-gcd为(2、3、5...)的+gcd为(6、10、15...)的...一个数的分解质因数形式,某一个指数>1为0,质因数为奇数个为-1,偶数个为1。

2023-10-19 20:18:42 139

原创 Devu和鲜花

如果每个盒子里的花的数量是无限的,用隔板法可以得出答案是。我们可以求答案的补集,用全部方案数减去补集方案数。,这就相当于先把ai+1个减了再用隔板法。现在每个盒子中区的花数要满足n个条件。每一个不符合条件的要求为。对于一个不符合要求的是。

2023-10-18 20:55:56 97

原创 开关问题 - 异或方程组

再看当前开关的状态与结果的状态是否一致,一致为0,说明掌控这个开关的开关门的异或值为0,不一致则为1,说明掌控这个开关的开关门的异或值为1。可以由此建立异或方程组,每一行代表一个开关,第i行第j列如果为1代表第i个开关受第j个开关掌控,为0代表不受第j个开关掌控。高斯消元后看剩余行的个数也就是自由元的个数,每有一个0 = 0, 答案数乘2。我们可以找每一个开关由哪些开关掌控,每一个开关的值设为动过为1,没动过为0。

2023-10-18 19:36:36 130

原创 J. Not Another Path Query Problem

①A > V V的第i位为0时,A的这一位为1,前面与V相同,后面都为0(后面的每一位值其实都可以任意,但如果1多的话后面删边会删的很多,漏掉不少情况,1的数量保持最少可以囊括更多情况,做到不重不漏)然后保留某些边,余下的这些边s, 满足s & A = A,也就是A中为1的s也为1,这样的边才能保留下来。我们用并查集判断联通,复杂度为O(m * 62)判断u、v之间有无“所有边权相与”>=V的路径。

2023-10-16 20:31:30 325

原创 B. Building Company

可以将每次奖励存到队列中去,每次奖励使某种员工增加时,就看这种员工可能参加的剩余的项目中有没有能减少限制的。给每一个项目加上若干个限制,每有一种员工达到要求,限制就减一,限制为0时就收获这个项目的奖励。可以用若干个优先队列每一种员工可能会参与到的所有项目,从小到大排序。

2023-10-15 19:54:36 168

原创 1315. 网格 - 卡特兰数

只要是触及上面这条红线的,就以第一次触及的点为起点沿红线反转,终点的位置与红线对称的位置可以看作触及红线的路线的终点。横坐标容易得出时m - 1,(m + n) - (m - 1)得出纵坐标n + 1。

2023-10-12 20:31:54 77

原创 1312. 序列统计

L~R范围可以等同于0~R-L范围。相当于在R-L+1个数中选出k个数。相当于在R-L+k个数中选出k个数。

2023-10-11 22:03:08 288

原创 1310. 数三角形

对于每一种选法,左下角看作第一个点,右上角看作第二个点两点中间的点数就是选法个数,即gcd(a, b) - 1。当共线的斜率大于0时枚举共线的长和宽,设为a、b,则这条线左下角的选法有(n+1-a)*(m+1-b)种。(设横坐标差的绝对值为x, 纵坐标差的绝对值为y )思路:先算出选三个点的所有情况,再减去三点共线的情况。共线的斜率为0时特判。

2023-10-11 19:19:48 88

原创 斐波那契前 n 项和 - 矩阵乘法快速幂

然后对这个式子进行快速幂,挺神奇的。

2023-10-08 19:34:48 99

原创 202. 最幸运的数字

⭐⭐⭐⭐⭐

2023-10-07 20:43:14 82

原创 龟速乘 - a * b爆ll且模数很大时的计算方法

如果int128也会爆掉的话可以用这种方法。也是快速幂的思想,快速幂是乘,这个是加。

2023-10-07 20:04:52 174 2

原创 O(根号n/ln(根号n))时间复杂度内求n的所有因子

如果n范围小于1e8的话还可以 log时间复杂度求质因子 的算法将求因数优化到log级别。范围内的质数除n,求出n的分解质因数形式,然后爆搜求出n的所有因子,2e9范围内因子最多的数有1600个因子,爆搜的时间复杂度很小。)复杂度内求n的所有因子,在2e9数量级比O(个,所以是这个时间复杂度。n范围内的质数大约有。

2023-10-05 18:59:33 315

原创 string 中 s.size()的小问题

s.size()返回的是一个无符号类型的,s.size() - 2也会被计算成一个正数,然后wa了。用的时候注意先转化为int。

2023-10-04 17:38:06 313

原创 反素数

2、3、5、7、11、13、17、19、23、29这些,还有每个质因子的指数一定大于等于下一个质因子的指数,这样可以保证约数最多的时候数字尽可能小。最大的反素数也就是约数个数最多的数中最小的那个数,可以考虑分解质因子形式。爆搜9个质因子,复杂度不会算,但实测dfs只会跑几千次。

2023-10-04 15:47:00 106

原创 阶乘分解质因数

枚举n范围内的质数即可。

2023-10-02 20:52:21 91

原创 质数距离 - 如何在较合理的时间复杂度内求2e9范围内的质数

2.在start计算过程中和j+的过程中很容易爆int,注意这部分开ll。3.求大于等于l的第一个p的倍数:(l + p - 1) / p * p。1.对于每次筛最少要从primes[i] * 2开始,不能筛到质数。求l、r之间的指数,范围在2e9,但l、r的差值不大,在1恶范围内。内的质数,然后拿这个指数去筛[l, r]范围内的即可。

2023-10-02 19:16:16 211

原创 W、X、Y

从前往后便利,每到一个数就找前面有无能与它配对的数,如果有就组成一对,最后能产生的对儿数就是答案。思路大概就是这样,对儿与对儿之间的那些数随便归到那一对儿里去就行,确保每个数都有一个归属就行。s(x)是若干y(x)的叠加,其中一个y(x)有转折点,在对应位置上s(x)也会有转折点。这样就可以保证差值不会重复,因为现在a数组是非递增的,b数组是递增的。一个非递增的数组减一个递增的数组,想当然新的数组不会有重复的元素了。不等于180度的角的个数就是求转折点的个数。解法不唯一,这是我提供的其中一种。

2023-10-01 17:37:30 104

原创 拆分Nim游戏 - SG定理

【代码】拆分Nim游戏 - SG定理。

2023-09-30 19:42:28 229

原创 Nim - sg函数

0必胜,等于零必败。

2023-09-30 19:07:18 73

原创 Fake Maxpooling 二维滑动窗口

先对每一行求一遍滑动窗口,列数变为(列数-k+1)再对每一列求一遍滑动窗口,行数变为(行数-k+1)剩下的就是每一个窗口里的最大值啦。

2023-09-30 18:06:36 130

原创 单调队列 - 滑动窗口

O(1)求窗口中的最大值/最小值。

2023-09-30 15:23:42 71

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除