- 博客(65)
- 收藏
- 关注
原创 ACM第一次排名赛
/转化整数,计算个数。基于红黑树实现,查找、插入和删除操作的时间复杂度均为 O(log n)在样例中,可以在中间分开(n为偶数):1 2 3 | 4 5 6。所在位置开始,向前遍历数组,计算前缀和。1.计算每个数字有几个洞,事先把0~9的洞的个数存到数组中。2.存在一条左上角到右下角的通路,计算路的长度:长+宽-1。要两人都选取最优解,x往大取且抑制y取大数,y也往大取;为中心,满足左右元素之和相互抵消的子数组的数量。y取前半部分,x取后半部分。3.求剩下可操作的个数:原有-路的长度。
2025-03-23 14:57:02
861
原创 回 溯 法
回溯法与递归相辅相成的,只要有递归,就有回溯。回溯就在递归下面的部分。纯暴力搜索,效率低,但对于一些用for循环搜索不出来的,用回溯有奇效;
2025-03-06 13:18:29
267
3
原创 并查集 && Kruskal算法求最小生成树
英文:Disjoint Set,即“不相交集合”;问题描述:将编号分别为1···N的N个对象划分为不相交集合,在每个集合中,选择其中某个元素代表所在集合。常见两种操作:合并两个集合查找某元素属于哪个集合所以,也称为“并查集”
2025-02-23 15:35:44
235
原创 单调栈 & 单调队列
滑动窗口是一个固定大小的窗口,它在数组上滑动,每次滑动一个位置,输出窗口内的最小值和最大值。①插入ay=2,4>2,删除;②判断2=2—删掉—栈空—输出。①插入ay=5,7>5,删除;②判断:5=5—删掉;①入ay=4,—3 4;②判断:4不小于4—删掉;①插入ay=3,—3;②判断:3不小于3— 删掉—栈空—输出。①插入ay=7,—2 7;②判断:7=7—删掉;直到<ai,输出stk[tt],把ai插到栈顶去;在队列中,更新:去掉队尾,插入对头。1.将队列中没用的元素删掉,使之具有单调性。
2025-02-18 08:41:06
379
原创 单、双 链 表
/ ne[i] 表示节点i的next指针是多少。①将你要插入的x的指针指向head的下一个位置。idx已经被使用过了,因此idx走向下一个位置。// idx 存储当前已经用到了哪个点。2.插入操作(将x插入在第k个数后面)// head 表示头结点的下标。①单链表:邻接表{储存图和树}// e[i] 表示节点i的值。1.插入操作(将x插到头结点)②双链表:优化某些问题。②head指向x的指针。
2025-02-15 19:17:12
300
原创 二分查找算法
算法思路:算法思路:假设目标值(箭头指向的数)在闭区间[l, r]中,整个区间被一分为二(按照满足某个性质分),左(右)边满足某个性质,右(左)边不满足某个性质,二分寻找这个边界(箭头指向的,2个,因为是整数)(可以寻找左、右边的边界,因此有两个情况),每次将区间长度缩小一半,当l = r时,我们就找到了目标值。模板①区间 [ l , r ] 被划分为 [ l , mid ] 和 [ mid + 1 , r ] 时使用:更新操作:计算mid时不需要加1。
2025-01-17 17:25:51
592
原创 牛客周赛 Round 72 <字符串>
所以对于每个 i,找到最右边的 j(j>i) 使得该串满足题意,直接遍历一遍,求 ch[i]!=ch[i+1]的个数即可。对于这段区间的答案就是 (j−i)∗(1+j−i)/2。如果一个子串满足题意,那么它的所有子串都会满足题意。然后找到后把 i跳到 j的位置,继续找即可。
2024-12-16 20:02:59
258
原创 牛客小白月赛106
将矩阵转化为 i j的代码:推出转移的公式:从第二行看:循环 i从1开始k是上一行最后一个数之后,处理后面这些,发现是刚才接着往后刚才到i-1,接下来就是i了,所以从i开始,到n结束可以知道第一个数是上一行+1,之后每个数,逐个增加用k记录上一行的最后一个,并且每次++注意:要先加后用:++k。
2024-12-12 22:01:10
829
3
原创 约瑟夫环问题
n只猴子围坐成一个圈,按顺时针方向从1到n编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。个人就淘汰,最后剩下的人的位置。这个位置是基于0开始计数的。这是因为我们是在一个圆圈中数数,所以数到。输入两个整数n和m,1
2024-12-11 20:56:48
522
1
原创 函数递归
底数 a是 0,指数 b 为负数,会导致 domain error 或 pole error 错误.底数 a为负数并且指数 b 不是整数,将会导致 domain error 错误.底数 a和指数 b都是 0,会导致 domain error 错误.在k0 && a!跳3级台阶的走法是前面跳1级台阶和2级台阶之和,发现:改成此形式 ,代码不输出。
2024-12-10 21:41:24
716
2
原创 解决斐波那契数的多种方法
斐波那契数列为:1,1,2,3,5,8,13.....,常规递推公式f(n)=f(n-1)+f(n-2);输入一个整数n(0
2024-12-01 12:50:34
518
原创 去重&排序
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的数字。题意总结:给你n个数,让你将这些数去重并升序排序。有2行,第1行为1个正整数,N,表示有N个数字。第1行为1个正整数M,表示不相同的数字的个数。第2行有N个用空格隔开的正整数。
2024-12-01 10:30:33
637
原创 求两点中点(函数结构体专题)
给出两个点的坐标,请你求出这两个点的连线的中点的坐标,请用函数和结构体编写代码。你可以假定数据范围再int范围内。请定义点结构体 struct point ,并使用函数实现,即函数返回值类型 为 point 类型。两行,两点坐标x,y,用空格隔开。中点坐标x,y,用空格隔开。
2024-11-25 08:35:51
316
原创 按出生日期排序(结构体专题)
送人玫瑰手有余香,小明希望自己能带给他人快乐,于是小明在每个好友生日的时候发去一份生日祝福。小明希望将自己的通讯录按好友的生日排序排序,这样就查看起来方便多了,也避免错过好友的生日。输入n个好友的信息,按生日的月份和日期升序输出所有好友信息。首先输入一个整数n(1<=n<=10),表示好友人数,然后输入n行,每行包含一个好友的信息:姓名(不超过8位),以及三个整数,分别表示出生日期的年月日。按过生日的先后(月份和日期)输出所有好友的姓名和出生日期,用空格隔开,出生日期的输出格式见输出样例。
2024-11-22 18:38:56
508
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人