自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 KMP 字符串

给定一个字符串 S,以及一个模式串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串 P在字符串 S中多次作为子串出现。求出模式串 P在字符串 S中所有出现的位置的起始下标。输入格式第一行输入整数 N,表示字符串 P的长度。第二行输入字符串 P。第三行输入整数 M,表示字符串 S的长度。第四行输入字符串 S。输出格式共一行,输出所有出现位置的起始下标(下标从 0开始计数),整数之间用空格隔开。数据范围1≤N≤1051≤M≤106输入样例:3aba5ababa

2024-12-10 16:03:26 164

原创 滑动窗口 单调队列

给定一个大小为 n≤106的数组。有一个大小为 k的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 k个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为 [1 3 -1 -3 5 3 6 7],k为 3。窗口位置 最小值 最大值[1 3 -1] -3 5 3 6 7 -1 31 [3 -1 -3] 5 3 6 7 -3 31 3 [-1 -3 5] 3 6 7 -3 51 3 -1 [-3 5 3] 6 7 -3 51 3 -1 -3 [5 3 6] 7 3 6

2024-12-10 12:15:46 337

原创 单调栈 模板

给定一个长度为 N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。输入格式第一行包含整数 N,表示数列长度。第二行包含 N个整数,表示整数数列。输出格式共一行,包含 N个整数,其中第 i个数表示第 i个数的左边第一个比它小的数,如果不存在则输出 −1。数据范围1≤N≤1051≤数列中元素≤109输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2考虑 用栈来保存。可以注意到,如果向左边找第一个小的话,那么举例子a3 > a5 (3 < 5 )

2024-12-10 01:35:07 192

原创 模拟题 队列

实现一个队列,队列初始为空,支持四种操作:push x – 向队尾插入一个数 x;pop – 从队头弹出一个数;empty – 判断队列是否为空;query – 查询队头元素。现在要对队列进行 M个操作,其中的每个操作 3和操作 4都要输出相应的结果。输入格式第一行包含整数 M,表示操作次数。接下来 M行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。输出格式对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。其

2024-12-09 23:14:07 314

原创 高精度 补档 使用压位的方法

效率提升一倍。

2024-12-09 01:13:54 137

原创 表达式求值

给定一个表达式,其中运算符仅包含 +,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。注意:数据保证给定的表达式合法。题目保证符号 - 只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1+1)+2) 之类表达式均不会出现。题目保证表达式中所有数字均为正整数。题目保证表达式在中间计算过程以及结果中,均不超过 231−1。题目中的整除是指向 0取整,也就是说对于大于 0的结果向下取整,例如 5/3=1,对于小于 0的结果向上取整,例如 5/(1−4)=

2024-11-26 14:36:11 164

原创 数组 模拟栈

实现一个栈,栈初始为空,支持四种操作:push x – 向栈顶插入一个数 x;pop – 从栈顶弹出一个数;empty – 判断栈是否为空;query – 查询栈顶元素。现在要对栈进行 M个操作,其中的每个操作 3和操作 4都要输出相应的结果。输入格式第一行包含整数 M,表示操作次数。接下来 M行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。输出格式对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。其中,em

2024-11-25 23:47:46 204

原创 双链表 模板题

实现一个双链表,双链表初始为空,支持 5种操作:在最左侧插入一个数;在最右侧插入一个数;将第 k个插入的数删除;在第 k个插入的数左侧插入一个数;在第 k个插入的数右侧插入一个数现在要对该链表进行 M次操作,进行完所有操作后,从左到右输出整个链表。注意:题目中第 k个插入的数并不是指当前链表的第 k个数。例如操作过程中一共插入了 n个数,则按照插入的时间顺序,这 n个数依次为:第 1个插入的数,第 2个插入的数,…第 n个插入的数。输入格式第一行包含整数 M,表示操作次

2024-11-21 16:55:23 254

原创 单链表 模板题

实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k个插入的数后面的一个数;在第 k个插入的数后插入一个数。现在要对该链表进行 M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第 k个插入的数并不是指当前链表的第 k个数。例如操作过程中一共插入了 n个数,则按照插入的时间顺序,这 n个数依次为:第 1个插入的数,第 2个插入的数,…第 n个插入的数。输入格式第一行包含整数 M,表示操作次数。接下来 M行,每行包含一个操作命令,操作命令可能为

2024-11-21 15:53:05 278

原创 区间合并 模板题

给定 n个区间 [li,ri],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3]和 [2,6]可以合并为一个区间 [1,6]。输入格式第一行包含整数 n。接下来 n行,每行包含两个整数 l和 r。输出格式共一行,包含一个整数,表示合并区间完成后的区间个数。数据范围1≤n≤100000,−109≤li≤ri≤109输入样例:51 22 45 67 87 9输出样例:3贪心 + 模拟

2024-11-16 19:37:32 163

原创 区间和 离散化 模板题

假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。现在,我们首先进行 n次操作,每次操作将某一位置 x上的数加 c。接下来,进行 m次询问,每个询问包含两个整数 l和 r,你需要求出在区间 [l,r]之间的所有数的和。输入格式第一行包含两个整数 n和 m。接下来 n行,每行包含两个整数 x和 c。再接下来 m行,每行包含两个整数 l和 r。输出格式共 m行,每行输出一个询问中所求的区间内数字和。数据范围−109≤x≤109,1≤n,m≤105,−109≤l

2024-11-16 18:24:23 253

原创 位运算 模板题

给定一个长度为 n的数列,请你求出数列中每个数的二进制表示中 1的个数。输入格式第一行包含整数 n。第二行包含 n个整数,表示整个数列。输出格式共一行,包含 n个整数,其中的第 i个数表示数列中的第 i个数的二进制表示中 1的个数。数据范围1≤n≤100000,0≤数列中元素的值≤109输入样例:51 2 3 4 5输出样例:1 1 2 1 2lowbit(x)return x & -x;-x = ~x + 1;作用是获得x中最后的一位1.本题通过不断相减 直到x =

2024-11-15 20:29:09 199

原创 判断子序列

给定一个长度为 n的整数序列 a1,a2,…,an以及一个长度为 m的整数序列 b1,b2,…,bm。请你判断 a序列是否为 b序列的子序列。子序列指序列的一部分项按原有次序排列而得的序列,例如序列 {a1,a3,a5}是序列 {a1,a2,a3,a4,a5}的一个子序列。输入格式第一行包含两个整数 n,m。第二行包含 n个整数,表示 a1,a2,…,an。第三行包含 m个整数,表示 b1,b2,…,bm。输出格式如果 a序列是 b序列的子序列,输出一行 Yes。否则,输出

2024-11-15 20:04:34 235

原创 数组元素的目标和

给定两个升序排序的有序数组 A和 B,以及一个目标值 x。数组下标从 0开始。请你求出满足 A[i]+B[j]=x的数对 (i,j)。数据保证有唯一解。输入格式第一行包含三个整数 n,m,x,分别表示 A的长度,B的长度以及目标值 x。第二行包含 n个整数,表示数组 A。第三行包含 m个整数,表示数组 B。输出格式共一行,包含两个整数 i和 j。数据范围数组长度不超过 105。同一数组内元素各不相同。1≤数组元素≤109输入样例:4 5 61 2 4 73

2024-11-15 01:46:51 221

原创 最长连续不重复子序列

给定一个长度为 n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数 n。第二行包含 n个整数(均在 0∼105范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤105输入样例:51 2 2 3 5输出样例:3双指针的思想。在注释里。

2024-11-12 21:01:27 192

原创 二维差分矩阵 模板题

输入一个 n行 m列的整数矩阵,再输入 q个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1)和 (x2,y2)表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 c。请你将进行完所有操作后的矩阵输出。输入格式第一行包含整数 n,m,q。接下来 n行,每行包含 m个整数,表示整数矩阵。接下来 q行,每行包含 5个整数 x1,y1,x2,y2,c,表示一个操作。输出格式共 n行,每行 m个整数,表示所有操作进行完毕

2024-11-11 22:07:06 452

原创 一维差分 公式

输入一个长度为 n的整数序列。接下来输入 m个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r]之间的每个数加上 c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数 n和 m。第二行包含 n个整数,表示整数序列。接下来 m行,每行包含三个整数 l,r,c,表示一个操作。输出格式共一行,包含 n个整数,表示最终序列。数据范围1≤n,m≤100000,1≤l≤r≤n,−1000≤c≤1000,−1000≤整数序列中元素的值≤1000输入样例:6

2024-11-11 21:38:50 285

原创 二维前缀和 子矩阵的和

输入一个 n行 m列的整数矩阵,再输入 q个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数 n,m,q。接下来 n行,每行包含 m个整数,表示整数矩阵。接下来 q行,每行包含四个整数 x1,y1,x2,y2,表示一组询问。输出格式共 q行,每行输出一个询问的结果。数据范围1≤n,m≤1000,1≤q≤200000,1≤x1≤x2≤n,1≤y1≤y2≤m,−10

2024-11-10 00:55:15 352

原创 一维前缀和 公式

输入一个长度为 n的整数序列。接下来再输入 m个询问,每个询问输入一对 l,r。对于每个询问,输出原序列中从第 l个数到第 r个数的和。输入格式第一行包含两个整数 n和 m。第二行包含 n个整数,表示整数数列。接下来 m行,每行包含两个整数 l和 r,表示一个询问的区间范围。输出格式共 m行,每行输出一个询问的结果。数据范围1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素的值≤1000输入样例:5 32 1 3 6 41 21 32 4输出样

2024-11-10 00:37:37 329

原创 高精度 除法 模板

给定两个非负整数(不含前导 0) A,B,请你计算 A/B的商和余数。输入格式共两行,第一行包含整数 A,第二行包含整数 B。输出格式共两行,第一行输出所求的商,第二行输出所求余数。数据范围1≤A的长度≤100000,1≤B≤10000,B一定不为 0输入样例:72输出样例:31大整数如何存呢?使用的是数组。小端法。便于进位。

2024-11-07 18:16:58 137

原创 高精度 乘法 模板

给定两个非负整数(不含前导 0) A和 B,请你计算 A×B的值。输入格式共两行,第一行包含整数 A,第二行包含整数 B。输出格式共一行,包含 A×B 的值。数据范围1≤A的长度≤100000,0≤B≤10000输入样例:23输出样例:6大整数如何存呢?使用的是数组。小端法。便于进位。乘法和加法思路类似, 进位只是不一定是1罢了。

2024-11-07 17:09:29 279

原创 高精度 减法 模板

给定两个正整数(不含前导 0),计算它们的差,计算结果可能为负数。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的差。数据范围1≤整数长度≤105输入样例:3211输出样例:21大整数如何存呢?使用的是数组。小端法。便于进位。注释已经写清楚了, 不再多言。

2024-11-07 16:29:28 248

原创 高精度 加法 模板

给定两个正整数(不含前导 0),计算它们的和。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的和。数据范围1≤整数长度≤100000输入样例:1223输出样例:35大整数如何存呢?使用的是数组。小端法。便于进位。注释已经写清楚了, 不再多言。

2024-11-07 13:13:29 253

原创 浮点数二分 模板

给定一个浮点数 n,求它的三次方根。输入格式共一行,包含一个浮点数 n。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留 6 位小数。数据范围−10000≤n≤10000输入样例:1000.00输出样例:10.000000yxc的整数二分模板:

2024-11-03 16:57:53 230

原创 整数的二分模板

二、思路及代码1.思路yxc的整数二分模板:

2024-11-03 16:49:23 205

原创 求逆序对的数量

文章目录一、题目二、思路及代码1.思路第一步:第二步:第三步:2.答案总结Just Review.提示:以下是本篇文章正文内容一、题目给定一个长度为 n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i个和第 j个元素,如果满足 i<j且 a[i]>a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数 n,表示数列的长度。第二行包含 n个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤100000,

2024-11-02 16:22:46 643

原创 归并排序 模板

文章目录一、题目二、思路及代码1.思路第一步:第二步:第三步:2.答案总结Just Review.提示:以下是本篇文章正文内容一、题目给定你一个长度为 n 的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n个整数(所有整数均在 1∼109范围内),表示整个数列。输出格式输出共一行,包含 n个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4

2024-11-02 14:22:35 138

原创 第 k 个数(快速选择算法)

文章目录一、题目二、思路及代码1.思路第一步:第二步:第三步:2.答案总结Just Review.提示:以下是本篇文章正文内容一、题目给定一个长度为 n的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序的第 k个数。输入格式第一行包含两个整数 n和 k。第二行包含 n个整数(所有整数均在 1∼109 范围内),表示整数数列。输出格式输出一个整数,表示数列的第 k小数。数据范围1≤n≤100000,1≤k≤n输入样例:5 32 4 1 5 3输出样

2024-11-02 00:45:22 163

原创 快速排序 模板

文章目录一、题目二、思路及代码1.思路第一步:第二步:第三步:2.答案总结Just Review.提示:以下是本篇文章正文内容一、题目给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。**输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1 ≤ n ≤ 100000输入样例:5

2024-11-02 00:30:07 170

原创 Bomb Lab bit

所以,只要我们的输入第一个值大于等于0, 有"0 1 3 6 10 15" (我的答案)这样规律的即可。阶段二结束。phase 3phase_3函数汇编代码:调用了sscanf函数,所以可以判断在这里读取了某些东西,向前看到了0x4025cf 转换成字符串是:说明这道题我们要输入两个整数,重新输入: "1 3"进行尝试。同时,在400f27处有一个跳转表:那么根据我的推测,这应该是类似 if else 的功能,根据第一个值的不同输入决定第二个值应该是多少。

2024-10-31 00:21:44 952

原创 DataLab bit

在Datalab上 保证可以帮你拿到实验的100分! 总结了所有的经验!!!!

2024-09-26 23:50:25 602 1

原创 打卡。。。

​题目:一共有 n个数,编号是 1∼n1,最开始每个数各自在一个集合中。现在要进行 m个操作,操作共有两种:M a b,将编号为 a和 b 的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;Q a b,询问编号为 a 和 b 的两个数是否在同一个集合中;输入样例:4 5M 1 2M 3 4Q 1 2Q 1 3Q 3 4输出样例:​​YesNoYes​。

2023-12-31 18:22:18 391 1

原创 lq 集训第三天(位运算的两道习题)

1.对于第一题思路较为简单,对于每一位我们可以通过右移 并与1 进行与(&)运算 获取每一位的数字,如果是1 对于ans 就++ ,如果是零就不用改动。2.对于第二题来说,需要我们知道异或运算具有结合律和交换律,我们可以列出(a1 ^ x) ^ (a2 ^ x) ^ (a3 ^ x) = (a1 ^ a2 ^ a3 ^ x ^ x ^ x) 而我们知道对于 x ^ x 进行运算一定为 0 ,并且 0 ^ x = x ,最后我们就可以推导出这样一个等式: a1 ^ a2 ^ a3 = x;

2023-12-22 22:20:06 506

原创 lq 集训第三天 (位运算 排序)

第三天

2023-12-22 21:47:32 403

原创 lq 集训第二天 (第一天习题部分)

题目问的是最多的鸭鸭数量,也就是1的数量。首先我们不考虑魔法的使用,那么总重量应该就是所有编号为1的a[i]的重量相加,我们将这个命名为 ess(essential的缩写)作为基本量。然后对整个数组进行修改。我们知道 在一段区间内进行修改,0 变为 1 的话会让 ess 增加,但是区间内会有1 变为 0 的情况 ,也就是可能有的鸭鸭会变成鼠鼠,那么就会让 ess 减少,对于一段区间内的变化,我们很容易想到刚学习过的前缀和知识,而且这是一维的,所以很简单。但是对于1变成 0 的情况,我们需要将其变为负数。对于

2023-12-21 23:13:31 383

原创 lq 集训第一天

一维的前缀和,差分二维的前缀和,差分放在下一个篇章。

2023-12-20 23:33:55 356 1

原创 数据结构与算法设计 : 约瑟夫问题

约瑟夫问题是一个经典的问题。已知 n 个人(不妨分别以编号 1,2 ,3,…,n 代表 )围坐在一张圆桌周围,从编号为 k 的人开始,从1开始顺时针报数 1, 2, 3, …,顺时针数到m 的那个人,出列并输出。然后从出列的下一个人开始,从1开始继续顺时针报数,数到 m的那个人,出列并输出,…依此重复下去,直到圆桌周围的人全部出列。输入:n, k, m输出:按照出列的顺序依次输出出列人的编号,编号中间相隔一个空格,每10个编号为一行。非法输入的对应输出如下:a)输入:n、k、m任一个小于1。

2023-12-14 17:55:51 468 1

原创 餐厅(数据结构与算法设计 选做题)

阿邱最近开了家餐厅。阿邱想了解某一时段至少有多少不同人出入餐厅。阿邱就雇佣了一个人,呆在餐厅门口,有人进入餐厅,他就在纸上记下+,有人出餐厅,他就在纸上记下-。假设同一时间没有两个人同时进入或出餐厅;也假设最初的时候餐厅中有足够多的人。问,这段时间里,至少有多少人出入餐厅。(不同人出入的顺序是随意的,一个人可以反复出入。Input第一行是一个正整数m,表示有m组测试数据。(m

2023-12-14 17:39:47 290 1

原创 突然发现重载忘了 记录一下

c++结构体重载我也不知道 死记硬背去咯。

2023-08-20 20:13:36 69 1

原创 北理乐学回文数的思考(附代码)

以上就是今天要讲的内容,本文主要通过构造三个简单的函数,加法,判断回文数小条件,颠倒赋值,并且巧妙处理了N进制数,得到了整个问题的解。经过分析,这道题综合性很强,每一小步都需要一些思考和总结,在做完题目的时候真的需要及时复盘,这样才能更好的进步。就写到这里了,祝学习进步!

2023-05-16 12:47:43 807 3

空空如也

空空如也

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

TA关注的人

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