自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 __int128的快读快写

_int128大约存放long long 的1.3倍,想要读入和输出必须用快读快写。

2025-04-09 16:39:29 74

原创 二分答案(模板)

模板1是尽量往左找目标,搜索出来的L是第一个 ≥ x的下标(除了x大于数组最后一个值,此时L和 r只能指向数组最后一个值)模板2是尽量往右找目标,搜索出来的L是最后一个 ≤ x的下标(除了x小于数组第一个值,此时L和r只能指向数组第一个值)浮点二分就相对简单多了,因为浮点除法不会取整,所以mid,l,r,都不用加1或减1。二分的最后退出条件都是l=r。

2025-03-20 11:07:37 201

原创 牛客周赛 Round 85(DE)

牛客周赛 Round 85(DE)题解

2025-03-18 20:51:02 596

原创 C#语法基础总结

c#基础总结

2025-03-17 15:14:46 1860

原创 整除分块(知识+例题)

对于这道题如果数据范围过大暴力肯定是会超时的以20为例,一共出现了多少个i的倍数?可以发现在连续的一段区间内是相同的,那么就启发我们是否可以将其分为若干块分别进行计算呢?这就是整除分块的核心思想了。

2025-03-17 15:12:40 285

原创 位运算性质

位运算的一些计算式子

2025-03-12 17:02:51 143

原创 链式前向星(模板)

【代码】链式前向星(模板)

2025-03-11 19:09:13 87

原创 lower_bound和upper_bound的用法

comp 用于自定义比较规则,此参数可以接收一个包含 2 个形参(第二个形参值始终为 val)且返回值为 bool 类型的函数,可以是普通函数,也可以是函数对象。实际上,第一种语法格式也设定有比较规则,只不过此规则无法改变,即使用 < 小于号比较 [first, last) 区域内某些元素和 val 的大小,直至找到一个不小于 val 的元素。此外,该函数还会返回一个正向迭代器,当查找成功时,迭代器指向找到的元素;反之,如果查找失败,迭代器的指向和 last 迭代器相同。头文件中,其语法格式有 2 种,

2024-11-14 19:42:57 187

原创 并查集详解

并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。

2024-08-24 11:33:25 542

原创 最短路总结(dijkstra,floyd,bellman,spfa)

超详细的总结

2024-08-23 16:01:13 1889

原创 异或的性质与应用

异或是一种二进制的位运算,符号为或表示。

2024-08-19 10:17:36 420

原创 动态规划(背包九讲 二)

背包dp完结篇,超详细

2024-08-18 09:30:15 909

原创 动态规划(背包九讲 一)

超详细的讲解,很适合初学者

2024-08-13 15:44:54 935

原创 递归小练习

观察题意我们会发现所有的次方最后都会分解为0,1,2,如果不是0,1,2,我们就继续进行分解,直到分解为0,1,2,很明显这个就是递归的出口。.如果为 '[ '就新开一个字符串进行递归把 [ ]里面的字符赋给s2;将一个数进行分解,很明显这是一个递归的题,因为137这个样例有过提示,如果为'] '就说明当前 [ ]里面的字符全加上了,退出递归。这个字符串进行了多重压缩,我们可以把每一重压缩进行递归解密。.如果不为'[' ']',我们就直接加上这个字符。

2024-08-11 09:56:15 371

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

也就是题上所说的志愿者可以空闲下来,那么我们可以假设我们有五个球 O O O O(假设这个小球价值为0)O,那么我们就有6个空,例如,拿上面4个球举例,我们在第二个空放两个隔板,结果为 1 0 3 第三个空放两个隔板,结果为 2 0 2,所以我们。假设我们有4个小球 O O O O,两个挡板(因为两个挡板可以分出三个区域,对应三个岗位),那么我们可以插入五个地方。题目就是给你一些志愿者,以及一些岗位至少要多少志愿者,你会有多余的志愿者,你需要将志愿者分配到岗位上,得到的结果其实就是二进制下取反,

2024-08-09 19:34:09 528

原创 string用法总结

string是一个字符串类,和char类型类似,string是动态的,会自动调整大小,节省了不必要的空间。会获取前一个输入的换行符,需要在前面添加读取换行符的语句。getchar()或cin.get()例如。

2024-08-02 20:08:20 764

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

给你两个矩阵,一个大矩阵n* n型,一个小矩阵m* m型,让小矩阵不断遍历大矩阵,将小矩阵下的元素与大矩阵对应位置的元素相乘,然后将所有乘积相加,得到结果矩阵的一个元素,最后输出这个结果矩阵(m-n+1)给你两个数 x,y,每次可以对x加一,可以加y次,此时x在二进制下有一些位发生改变,总共有多少位发生过改变,例如,0001加一后变成0010,有两位发生改变。可以用4个循环模拟,i+k-1,j+l-1,代表大矩阵当前元素,同时,c[i][j]要+=,因为小矩阵所有的乘积和为结果矩阵的一个元素。

2024-08-02 19:17:00 347

原创 STL用法总结(二)(deque,map,set)

映射类似于函数的对应关系,每个x对应一个y,而map是每个键对应一个值。//头文件//初始化定义//node是结构体类型map特性:map会按照键的顺序从小到大自动排序,键的类型必须可以比较大小set容器中的元素不会重复,当插入集合中已有的元素时,并不会插入进去,而且set容器里的元素自动从小到大排序。即:set里面的元素不重复 且有序//头文件//初始化定义set s;代码含义s.begin()返回set第一个元素地址(迭代器)s.end()

2024-07-29 20:25:26 1605

原创 STL用法总结(一)(vector,stack,queue)

vector为可变长数组(动态数组),定义的vector数组可以随时添加数值和删除元素。注意在局部区域中(比如局部函数里面)开vector数组,是在堆空间里面开的。在局部区域开数组是在栈空间开的,而栈空间比较小,如果开了非常长的数组就会发生爆栈。故局部区域不可以开大长度数组,但是可以开大长度vector。1.2 一维数组初始化//定义了一个名为a的一维数组,数组存储int类型数据//定义了一个名为b的一维数组,数组存储double类型数据。

2024-07-29 20:24:35 924

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

因为是从第一个国家到第 k少的国家,且保证各个国家之间可以相互到达,且m>=n-1 那么说明这些国家是连在一起的,我们可以用一个数组存储,把这些国家存里面最后再排序。

2024-07-25 13:58:39 385 2

原创 kmp模板

【代码】kmp模板。

2024-07-22 17:43:20 168 2

原创 组合数(三种求法)

从 n个数不同的数中选出 m个的方案数是,对第一个数有两种决策,若不选,则从剩下的 n-1个中选 m个,即;若选,则从剩下的 n-1个中选 m-1个,即。所以递推式根据公式我们发现和杨辉三角一样,当n==1,m=0时,为1;当n==3,m==2时,为3。m,n数据小的时候我们可以用递推,但如果数据范围太大就要用其他方法。

2024-07-22 17:19:28 1955 4

原创 bitset以及set的使用

set就是集合,STL的set用二叉树实现,集合中的每个元素只出现一次,里面的元素是唯一的(参照数学中集合的互斥性),并且是排好序的(默认按键值升序排列),访问元素的时间复杂度是O(log以2为底,n的对数)不能直接修改容器中元素的值,必须先删除原有的元素,再插入新元素set在头文件<set>中,set具有迭代器;set<int> q;//以int型为例 默认按键值升序//降序排列int x;//将x插入q中q.erase(x);//删除q中的x元素,返回0或1,0表示set中不存在x。

2024-07-21 17:04:04 822

原创 Codeforces Round 960 (Div. 2)

刚开始想的是将数组 a进行排序,然后计算有多少个最大的数,如果最大的数的数量为奇数,那么就输出 yes,为偶数就输出 no,因为我们可以刚开始直接选最大的数,比如3 3 3 2 2,刚开始我们直接选 3,bob也选 3,最后剩一个 3 所以输出 yes。但其实为偶数的时候,也有可能赢;就比如,1 1 1 2 2 3 3 ,最大的数是 3虽然出现了出现了偶数次,但我们刚开始可以先选1,那么bob也只能选 1(如果bob选 3,那么我们再选 3就赢了;

2024-07-21 11:18:22 305

原创 单调栈(单调递减栈,单调递增栈)

一种特殊的栈。在栈的「先进后出」规则基础上,要求「从到的元素是单调递增(或者单调递减)」。其中满足从栈顶到栈底的元素是单调递增的栈,叫做「单调递增栈」。满足从栈顶到栈底的元素是单调递减的栈,叫做「单调递减栈」

2024-07-19 20:03:46 1034

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

因为是将0转化为n,那么我们可以反过来想将n变成0,最少需要几步,可以贪心的想能除就除,我们需要特判一下0,1,2,如果n为偶数就需要 n/2步,如果为奇数就需要 n/2+1。当时没有反着想,就直接从 2开始算多少次能达到 n,其实并不行,可以从 3算或者更大的数。

2024-07-18 13:24:56 388

原创 二叉树的建立和遍历

二叉树可以用数组建立,也可以用链式结构建立,我们主要谈一下用数组建立。

2024-07-17 10:24:53 277

原创 二叉堆(优先队列)

定义:二叉堆本质是一种完全二叉树,分类:二叉堆分为最大堆和最小堆两种类型,最大堆和最小堆分别又可称为大顶堆和小顶堆。最大堆中,任何一个父节点的值都它的左、右孩子节点的值;最小堆中,任何一个父节点的值都它的左、右孩子节点的值。二叉堆的根节点叫做堆顶。因此,最大堆的堆顶是整个堆中的最大元素,最小堆的堆顶是整个堆中的最小元素。

2024-07-15 17:27:17 308

原创 队列(优先队列,单调队列)

因为如果i>=k,那么队列内的元素下标数量有可能超过了窗口所包含的数量,用while循环,如果当前遍历的位置下标 i - 队列最前面的下标 ≥ 窗口所包含的数量,那么说明最前面的元素超出了窗口,将最前面的元素弹出,同时最前面的元素就是。我们对数组进行遍历,如果队列末尾的数小于当前遍历的数a[i],那么我们就弹出队尾的元素,因为比a[i]小的数可能有多个,所以用while循环,然后把当前元素的下标入队,队首的元素为窗口的最大值。n为数组个数,k为滑动窗口包含的个数,双端队列q中存储的为数组的下标。

2024-07-14 20:08:12 383

原创 欧拉筛法(线性筛)

素数。

2024-06-22 17:52:32 285

原创 c语言期末大作业(企业员工信息管理)

做了一个企业员工信息管理,跟学生信息管理类似,用的单链表实现的,话不多说直接放源码。

2024-06-22 17:09:27 241

原创 乘法逆元(费马小定理)

费马小定理:在数论中,如果a是一个整数,p是一个质数,那么。对p取余,和 a对 p取余,余数相等。mod p等于0(a是 p的倍数,那么。也为p的倍数),a mod p也等于0。(mod p),符号。那么我们可以生成一个表格。

2024-06-01 12:45:18 429

原创 2022ICPC区域赛G题(杭州站)

思路分析:要想平均攻击力最大,那么每次遇到零时,如果cnt(野兽数量大于2)可以就进行操作 -1,但是如果后面出现操作 -1,而此时你的野兽数量并不能进行合并(数量为1时),那就无法通过路径。原题概括:初始时,你有一个野兽,攻击力为1,现在给你一条有n个操作的路径,你将进行n个操作,要求野兽的平均攻击力最大,如果未通过这条路径,则输出-1,通过了就输出一个分数,sum(攻击力总和)/cnt(宠物数量),要求是最简分数。操作 -1:选择两只野兽进行仪式,将失去一个野兽,而它的攻击力可以加给另一个。

2024-05-31 18:51:18 512

原创 快速幂算法

快速幂算法能帮我们算出指数非常大的幂,传统的求幂算法之所以时间复杂度非常高(为O(指数n)),就是因为当指数n非常大的时候,需要执行的循环操作次数也非常大。所以我们快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。这样不仅能把非常大的指数给不断变小,所需要执行的循环次数也变小,而最后表示的结果却一直不会变。

2024-05-24 11:26:33 454

原创 sort自定义排序

sort类似快排时间复杂度为2*log2(n)

2024-05-22 20:06:38 490 1

原创 c++去重函数unique

开始向后比较,遇到重复元素忽略,遇到不同元素,就把这个不同元素存入 t 数组,同时再。unique去重区间左闭右开(和sort)一样。永远不会被存入,直接手动加上就行了。1.头文件n是:最后一个不重复数字的下标。不过一般在进行去重时先排序。重不重复都要加,这是因为。存入 t 数组,所以。

2024-05-22 19:51:23 381 1

原创 辗转相除法求最大公约数

辗转相除法,又称欧几里德算法(Euclidean Algorithm),是求两个数的最大公约数(greatest common divisor)的一种方法。用较大的数除以较小的数,再以除数和余数反复做除法运算,当余数为0时,取当前算式除数为最大公约数。求30和18的最大公约数:30 / 18 = 1 余 1218 / 12 = 1 余 612 / 6 = 2 余 0所以,30和18的最大公约数为6。如果用小数除以大数,只是过程多了一步,结果没有差别,所以写代码时不用考虑两个数的大小。

2024-05-20 18:23:35 264 1

原创 2024ccpc全国邀请赛(郑州)暨第六届ccpc河南省赛(补题)

实力有限比赛中只写出来三题。。

2024-05-18 20:31:15 466

原创 前缀和(一维和二维)

前缀和是指某序列的前n项和,可以把它理解为数学上的数列的前n项和,而差分可以看成前缀和的逆运算。将差分数组进行前缀和就可以得到原数组,合理的使用前缀和与差分,可以将某些复杂的问题简单化,降低程序的时间复杂度。

2024-05-06 18:07:58 1798 1

原创 高精度算法(加,减,乘,除)

高精度算法是处理大数字的数学计算方法,一般几位或者十几位数字,我们可以进行计算,但如果是几百位甚至是几千位数字,我们就要用高精度算法进行计算,但往往这个算法不会单独进行考察,而是和其他算法一起考。

2024-04-29 15:05:46 636

空空如也

空空如也

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

TA关注的人

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