自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串哈希2

首先先说一下标题为啥叫字符串哈希2,因为字符串哈希1中记录的模板和例题并不完善,字符串哈希2算是对字符串哈希1的一个补充吧,本章节没有讲字符串哈希是什么,如果不知道的话请先看。

2025-05-20 10:11:11 297

原创 几何知识点

向量b和向量a张成的平行四边形的有向面积 ,b在a的逆时针方向为正,顺时针方向为负。:向量b在向量a上的投影与a的长度的乘积。直线ab与线段cd无交点。直线ab与线段cd有交点。==c点在直线ab的左侧。==c点在直线ab的右侧。线段ab与线段cd无交点。

2025-05-18 11:09:03 1002

原创 筛法求莫比乌斯函数

int mu[N];//记录i的莫比乌斯函数值void get_mu(int x)//筛法求莫比乌斯函数mu[1]=1;i<=x;i++)if(!mu[i]=-1;i*n[j]<=x;j++)m[p]=1;mu[p]=0;break;else。

2025-04-25 14:55:22 341

原创 筛法求约数个数

这个方法是用来解决求。

2025-04-25 14:06:29 248

原创 Tarjan求LCA(最近公共祖先)

在有根树中,找出某两个结点u和v最近的公共祖先。一般有两种方法:树上倍增大跳求LCA和Tarjan离线算法求LCA,本篇主要描述Tarjan离线算法求LCA。5、寻找与当前节点u有关的查询,判断所查询的除了u以外的另一节点u’是否已访问。6、若u’已经被访问过,则u和u’的LCA就是u’已经被合并到的节点。2、遍历当前节点u的所有子节点(邻居节点)v,并置u节点为已访问。1、任选一个节点root作为根节点,从根节点开始遍历。3、若v还有子节点,则继续递归其子节点。4、并查集合并v到u上面。

2025-02-15 15:00:03 466

原创 二分图求最大匹配

如果不知道二分图的可以看我之前博客这里二分图的最大匹配其实就是二分图的最多匹配边,就比如下边这个二分图连线代表男女有意向的人,这个二分图的最大匹配其实就是这些人最多可以有几对情侣,那应该如何来求呢,下边是思路。

2025-02-14 16:02:08 348

原创 二分图的判定(染色法)

无向图的节点可划分为两个不相交的非空集合(A 和 B)。同一集合内的节点之间没有边相连,所有边均连接 A 和 B 中的节点。

2025-02-10 13:09:40 414

原创 线段树(点修,区查,区修)

线段树是一种二叉搜索树,而二叉搜索树,首先满足二叉树,即每个结点最多有两颗子树,并且是一颗搜索树,我们要知道,线段树的每个结点都存储了一个区间,也可以理解成一个线段,而搜索,就是在这些线段上进行搜索操作得到你想要的答案。

2025-02-07 19:37:39 362

原创 最小生成树kruskal算法

【代码】最小生成树kruskal算法。

2025-02-04 10:14:08 174

原创 最小生成树Prim算法

Prim算法就是给你一个起点,每次找与这个点相邻边的最小值,直到遍历每个节点。最小生成树是使图中连接起来与小的最小代价。上边这张图的最小生成树就是下图。

2025-02-03 20:18:45 396

原创 链式前向星存图

链式前向星是一种用于存储图的数据结构,特别适合于存储稀疏图,它可以有效地存储图的边和节点信息,以及边的权重。这个题其实也是个迪杰斯特拉模板题,但就是数据范围比较大,需要用链式前向星存图和队列优化迪杰斯特拉算法来写。

2025-02-01 14:52:31 203

原创 分解质因数--试除法

这个题其实就是要求因子的个数,然后除2就是矩形的个数,然后再把不满足的矩形减去就行,这个题我们用质因数分解来求因子的个数,因为这个题的范围比较大,所以求质因数分解时,我们需要用素数筛来先把能用到的素数找出了,进行优化。把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。从小到大枚举所有数(尝试x的所有因数)

2025-01-21 10:38:31 1040

原创 欧拉函数模板

在数论中,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1)。此函数以其首名研究者欧拉命名(Euler’stotientfunction)。例如φ(8)=4,因为1,3,5,7均和8互质。注:a,b互质即gcd(a,b)=1。

2025-01-19 16:31:45 599

原创 Codeforces Round 997 (Div. 2)

这个题题目说的很复杂但其实不难,一直一开始正方形的边长是m,每次移动x,y个单位,求移动过程中图形的周长,其实这个不规则图形的周长可以看成一个矩形,因为题目说第一次移动不算,所以我们从第二次开始移动累加x,y最后加m乘二就是周长。这次比赛感觉打得不错,但对于第三题想的时间太长了,浪费了我的一些时间,最后过了三题,也是又加了分cf已经到了1372,明天还有一场cf继续加油,争取上1400。这个题我感觉就是找规律,遍历每一行i找1到i-1中1的个数x找i+1到n中0的个数y最后x+y+1的位置就是i。

2025-01-18 19:58:28 258

原创 Codeforces Round 996 (Div. 2)

这次比赛是寒假第一场cf比赛,一开始进入比赛因为翻译问题耽误了十几分钟吧,然后就在想要不要打了,因为已经耽误这么长时间了,但又想到上一个博客说以后cf都打然后就打了,第一题比较顺利地过了,第二题因为马虎也错了一发,第三题真的非常极限,剩最后20分钟左右才想到思路,最后三分钟写出来了,最后5000多名加了30多分,也算比较满意吧。只需要判断两青蛙之间有奇数个荷叶还是有偶数个荷叶就行了,如果是奇数则后手获胜反之则先手获胜。

2025-01-17 18:26:30 204

原创 Hello 2025

首先说一下我的计划,我准备从2025年开始一直打cf直到开学,打完后一定要补提要不然相当于这一场白打,牛客上的竞赛也要尽可能打,因为我感觉牛客质量挺高的,然后定个目标吧,在今年XCPC开始之前cf上1400分,牛客上1500分。这一题我们只需要看有0的那一行和列,因为没有0的行和列的值肯定为0,然后让行和列比较长的是顺序的最后的答案肯定是max(m,n)+1。首先我们有k次修改,我们每次只能删除相同的数,所以我们就可以把出现次数少的先修改就行了。

2025-01-05 10:41:47 391

原创 裴蜀定理和扩展欧几里得定理

若a,b为整数,且gcd(a,b)=d,那么对于任意的整数 x,y,ax + by 都一定是d的倍数,特别地,一定存在整数x,y,使 a x + b y = d成立。扩展欧几里得算法(英语:Extended Euclidean algorithm)是欧几里得算法(又叫辗转相除法)的扩展。已知整数a、b,扩展欧几里得算法可以在求得a、b的最大公约数的同时,能找到整数x、y(其中一个很可能是负数),使它们满足贝祖等式 ax + by = gcd(a,b)(裴蜀定理)

2024-12-26 19:26:03 773

原创 整除分块算法

引入整除分块是数论问题中非常常用的技巧,先来看一个简单的问题:已知,给定一个 n,求 的值。先假设 ,第一反应肯定是 遍历一遍 1 ~ n 直接求和,轻松得到答案。但如果 ,甚至 呢,显然就不能 暴力了,这就得用到接下来要介绍的整除分块的内容。找规律我们先试着计算一下 前几项(几十项)的值,比如 n = 20:iii1234567891011121314151617181920ni\frac{n}{i}in​20106

2024-12-04 11:23:27 672

原创 20241114升达ACM校队训练赛(补题)

首先我们可以根据题意发现偶数的最大值就是二进制全为一的时候,而奇数的最大值为,前一个偶数的排列加n,然后我们只需要构造偶数排列就行,然后我们进行的&操作把他看成一个整体,就比如a|(b&c)|d,然后就会得到一个全是或操作的式子,后面进行二进制操作就行了。这个题使用双指针来做的,我们只需要判断这个元素和这个元素右边的这个元素还有这个元素对称的元素和对称元素左边的那个元素,如果这四个数有三个一样的干扰度加一如果有四个相等的干扰度加二,但要特判中间的四个元素或三个元素因为这三个或四个元素都在一起。

2024-11-20 17:18:49 438

原创 2024-2025 ICPC, NERC, Southern and Volga Russian Regional Contest 补题

这个题的思路其实是二分,赛时想到要用二分但是不知道check函数怎么写,赛后看了别人提交才知道,首先这个题为什么可以二分呢,我们可以发现如果一个序列可以变成全是2,就一定可一变成全是1和全是0,所以就可以判定可以二分k来进行解题,那么cheak函数应该怎么写呢,就是可以,先让一个数组b来存储a[i]-k,然后遍历b数组如果b数组大于0就进行操作,最后如果数组里面的数全为零就可以满足条件,反之则不满足。

2024-11-20 11:43:13 787

原创 Codeforces Round 968 (Div. 2)

反思:这一次下午写的觉得脑子不太清醒,第三题卡的时间太长了,导致第四题都没有时间想了。

2024-09-11 18:49:47 572

原创 Codeforces Round 969 (Div. 2)

一开始我这个题也没有思路,但经过大量的找规律,就发现a和b的最大公约数与这个题有关,所以就找到了一种规律吧,先求一下a和b的最大公约数,然后把数组求余最大公约数,再把数组排序,让mi等于极差,然后再遍历一下数组,把m[i]加最大公约数减m[i+1]与mi求最小值,最后mi就是结果。我们只需要找到原始数组里面的最大值,如果最大值在区间,就改变最大值加1或减1最后输出就最大值就好了。给你一个数组,给你一个区间,如果数组里面值满足区间,就进行加1或减1操作。

2024-09-10 22:12:47 603

原创 树状数组算法

lowbit这个函数的功能就是求某一个数的二进制表示中最低的一位1,举个例子,x = 6,它的二进制为110,那么lowbit(x)就返回2,因为最后一位1表示2。2.树状数组的作用被线段树完全涵盖, 凡是可以使用树状数组解决的问题, 使用线段树一定可以解决, 但是线段树能够解决的问题树状数组未必能够解决.看下图我们会发现,数组的下标其实是有规律的,就比如下标为1,3,5,7的二进制最后一位1都是2。然后她再给你一个下标x,和一个数y让你执行操做1,就可以执行这样的操作。就比如他给你一个数组个数为n。

2024-08-23 17:04:21 1647

原创 最短路问题总结

本文介绍了几种常见的图论最短路径算法,包括朴素的Dijkstra算法适用于稠密图,堆优化后的Dijkstra算法适合稀疏图,Bellman-Ford算法能处理负权边但需检查负环,SPFA算法是Bellman-Ford的一种优化,以及Floyd算法用于求解多源汇的最短路径问题。每个算法都提供了详细的更新过程和代码实现。具体讲解看我之前博客。

2024-08-22 17:36:45 467 2

原创 SPFA(最短路问题)

SPFA算法是求解单源最短路径问题的一种算法,由理查德·贝尔曼(Richard Bellman) 和 莱斯特·福特 创立的。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore 也为这个算法的发展做出了贡献。它的原理是对图进行V-1次松弛操作,得到所有可能的最短路径。其优于迪杰斯特拉算法的方面是边的权值可以为负数、实现简单,缺点是时间复杂度过高,高达 O(VE) 其中V是节点数量,E是边数量。但算法可以进行若干种优化,提高了效率。

2024-08-22 17:28:41 481

原创 Floyd算法(最短路问题)

Floyd算法是一种用于找出加权图中所有顶点间最短路径的动态规划方法。它通过逐步考虑每个顶点作为中转点,检查是否有更短路径。算法首先初始化一个权值矩阵,然后通过三层循环更新矩阵,直到找到最终的最短路径。文章提供了算法实例和代码实现,并指出Floyd算法能处理负权边但不能处理负环图,适用于小规模问题。

2024-08-21 09:39:39 393

原创 迪杰斯特拉算法(最短路径问题)

算法特点:迪杰斯特拉算法可以算出从一个顶点到其余各顶点的最短路径,解决的是有权图中最短路径问题。

2024-08-20 10:04:39 525

原创 并查集(保姆级讲解)

并查集是一种树形的数据结构。支持两种操作**查找:**确定某个元素在那个集合**合并:**将两个集合的元素合并在一起。

2024-08-18 17:45:09 907

原创 背包九讲(求方案数,求具体方案数,有依赖背包)

有依赖关系的背包问题,他的每一个物品的选择情况都有其子节点的选择情况构成,而子节点的选择情况又由父节点决定(父节点如果不选,则所有子节点都选不了)。给定n 个物品,以及一个容量大小为m 的背包,然后给出n个物品的体积及价值,求背包最大价值是多少,也就是选择总体积不超过m 的物品,然后使总价值最大。给定n nn个物品,以及一个容量大小为m mm的背包,然后给出n nn个物品的体积及价值,求背包最大价值是多少,也就是选择总体积不超过m mm的物品,然后使总价值最大。如果选择一个物品,则必须选择它的父节点。

2024-08-16 18:01:30 639

原创 背包九讲(混合背包,分组背包)

给定n nn个物品,以及一个容量大小为m mm的背包,然后给出n nn个物品的体积及价值,n个物品是分为若干组,每组最多只能选择一个物品。求背包最大价值是多少,也就是选择总体积不超过m mm的物品,然后使总价值最大。这道题其实也就看着复杂,其实就是把三种背包问题放一起了。我们来分析一下,上面讲多重背包的时候,通过二进制优化,将多重背包分解为01背包来写,那么现在就变成了两种背包问题混合了,那么怎么处理呢?简单来说就是多重背包与完全背包的混合,也就是说既存在可以无限获取的物品,也存在获取上限的物品。

2024-08-15 17:08:02 265

原创 Turtle and an Infinite Sequence

所以只要求这一段的或运算和就行了,至于快速或运算的模版直接背下。不知道为什么会有找规律这种nt题型。​ ,如果我们多写几步:再a。首先每一秒都会发生a。

2024-08-13 19:37:30 257

原创 背包九讲(多重背包问题)

多重背包我们其实可以看成为01背包和完全背包的组合。也可以把多重背包问题只转换成01背包问题,我们一起来看看解题思路。

2024-08-13 16:12:48 1135

原创 背包九讲(01背包,完全背包,二维费用的背包)

完全背包与01背包不一样的是:完全背包中的物品都可以无限次的取,而01背包中的物品只可以取一次,所以完全背包问题中的集合划分会比01背包问题的集合划分多的多的多。如果第i件物品放入背包,则背包容量还剩j-v[i],所以要取前i-1件物品放入背包剩余容量j-v[i]所获得的最大价值f[i-1][j-v[i]]。2.2 如果第i件物品放入背包,则f[i][j]=f[i-1][j-v[i]]+w[i]1.如果当前背包容量j

2024-08-12 19:20:25 638 1

原创 虫洞操纵者

当时比赛的时候我就想起用BFS写但没有思路,然后看了别人写的才知道,就是我们一开始可以先把数组处理一下让数组异或1,异或之后0就变成可以走的路,1就变成了墙和边界,然后我们就正常的按BFS套路走,在每一个位置都遍历上下左右四个方向,如果遇见1就回溯直到再遇见下一个位置是1的点,如果这个点没有被遍历过就入队,直到找到(n,n)就行了。这个题是牛客周赛上的一道题。

2024-08-12 17:24:28 229

原创 河南萌新联赛2024第(四)场:河南理工大学

先把至少要分配几人用总数减去,然后再把剩下的人分配到岗位上有几种分配方法,岗位可以分配0人,然后用排列组合的方法就能求出来,大家可以看下边图片就可以得到公式了。有众多志愿岗位需要被分配,给你志愿者人数和一个数组数组中的值是每个地方要分配的最小值,求可能的分配情况总数。直接模拟一遍就行了,遇见数子存起来,遇见加号求和,再把数字用数组存起来排序输出就行。给以一个字符串,字符串只有数字和加号,输出从大到小写下自己的算式并算出答案。给你n个数输出一个整数,这个整数是在这个数组任意两个数同或的最大值。

2024-08-08 09:35:44 733

原创 Codeforces Round 963 (Div. 2)

如果数组直接是全奇数或全偶数就输出0,反之就把所有的偶数变成奇数,因为奇数加偶数等于技术但偶数加偶数还等于偶数,所以先求出最大的奇数再与比它小的偶数相加,操作数加1,如果偶数比奇数大,就让奇数加最大的偶数再进行操作,操作数加2。可以先找到第一次亮灯最大的时候,让其他亮灯的时候加n个2k使与第一次亮灯最大的时候最接近,然后再排序,如果最大值减最小值大于等于k就输出-1,反之输出最大值。n个灯,每k次变化一次开关状态。就是给你一个数n和一个字符串,字符串中只有ABCD四种字符,求不超过n各种字符的和。

2024-08-05 17:06:49 716

原创 河南萌新联赛2024第(三)场:河南大学

每个用户有仅属于自己的一些公钥然后是 q 次查询,每次查询给出一个用户名,一个 IPv4 地址以及此次登录使用的私钥,要求你判断该 IPv4 地址对应的主机上的用户,是否拥有这个私钥对应的公钥。给定一个n×n 的卷积核和一个m×m 的矩阵。我们知道异或符号定义是二进制位相同就是0反之就是1,我们把每次加1与前面进行异或操作,得到的1的个数就是二进制变化的位数,然后我们可以用bitset来求1的个数,然后这个题的数据范围比较大,我们可以先把1~2e6的异或1的个数进行前缀和预处理,然后用的时候直接输出就行。

2024-07-31 18:32:06 762

原创 bitset用法

这个题用bitset做比较简单,可以定义两个bitset,a,b然后让其中一个b[0]=1,然后让b左移每个数的平方个位置,再让a,b求|和最后得到的b数组中1的个数就是种类数。跟上题一样也是先求bitset的数组,得到数组在从target向上向下模拟,看b数组是否为1,最先为1的必定与target最少相差最少。这一题跟上一题差不多给你n个数组,从每个数组随机选一个数,然后求每个数和与target(题目给得一个数)最少相差最少。给你n个数组,从每个数组随机选一个数,然后求每个数的平方和有几种。

2024-07-29 18:01:08 357

原创 常用STL容器函数

find()(从开头开始查找)和rfind()(从末尾开始查找)查找函数。empty() 如果队列空则返回true反之返回false。front() 返回队列中的第一个元素。back() 返回队列中最后一个元素。push() 在队尾插入一个元素。size() 返回队列中元素个数。pop() 删除队列第一个元素。这个容器可以自动排序和去重。substr()截取函数。insert()插入函数。erase()删除函数。erase()删除函数。

2024-07-25 19:32:48 406

原创 河南萌新联赛2024第(二)场:南阳理工学院

这一次比赛中间的题都是大模拟,用stl容器比较多,而我stl用的不好导致模拟题没写出来,当时连两个容器一起怎么遍历都不知道,别说写了,赛后我要好好学一下容器,要不然只用数组对于一些大模拟题太吃亏了。

2024-07-25 18:34:23 1412 5

空空如也

空空如也

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

TA关注的人

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