自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 acwing算法基础课——双链表

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

2022-04-02 16:28:54 188

原创 acwing算法基础课——单链表(数组模拟单链表)

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

2022-03-28 00:39:38 221

原创 acwing算法基础课——区间合并

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

2022-03-25 13:15:19 331

原创 acwing算法基础课——双指针算法

AcWing 799. 最长连续不重复子序列给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0∼1050∼105范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤105输入样例:51 2 2 3 5输出样例:3思路:使用双指针算法,根据观察发现,当使用i,j两个快慢指针表示当前的指针...

2022-03-20 01:26:12 196

原创 acwing算法基础课——差分

核心操作:void insert(int l, int r, int d){ b[l] = b[l] + d; b[r + 1] = b[r + 1] - d;}输入一个长度为nn的整数序列。接下来输入mm个操作,每个操作包含三个整数l,r,cl,r,c,表示将序列中[l,r][l,r]之间的每个数加上cc。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数nn和mm。第二行包含nn个整数,表示整数序列。接下来mm行,...

2022-03-14 23:51:19 257

原创 acwing算法基础课——子矩阵的和

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

2022-03-12 22:48:39 443

原创 acwing算法基础课——前缀和

输入一个长度为 nn 的整数序列。接下来再输入 mm 个询问,每个询问输入一对 l,rl,r。对于每个询问,输出原序列中从第 ll 个数到第 rr 个数的和。输入格式第一行包含两个整数 nn 和 mm。第二行包含 nn 个整数,表示整数数列。接下来 mm 行,每行包含两个整数 ll 和 rr,表示一个询问的区间范围。输出格式共 mm 行,每行输出一个询问的结果。数据范围1≤l≤r≤n1≤l≤r≤n,1≤n,m≤1000001≤n,m≤100000,−100...

2022-03-12 15:44:44 127

原创 acwing算法基础课——二分做题笔记

数的三次方根给定一个浮点数 nn,求它的三次方根。输入格式共一行,包含一个浮点数 nn。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留 66 位小数。数据范围−10000≤n≤10000输入样例:1000.00输出样例:10.000000#include<iostream>using namespace std;int main(){ double n; scanf("%lf", &n); doub

2022-03-11 15:18:21 173

原创 acwing算法基础课学习笔记——二分

整数二分题目描述给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回“-1 -1”。输入格式第一行包含整数n和q,表示数组长度和询问个数。第二行包含n个整数(均在1~10000范围内),表示完整数组。接下来q行,每行包含一个整数k,表示一个询问元素。输出格式共q行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回“-1 -1”.

2022-03-11 13:21:14 248

原创 acwing算法基础课学习心得——快速排序

快速排序基于分治先随机找要排序的数中的一个,然后把大于这个数的放在左边,小于的放在右边,然后递归实现。模板如下void quick_sort(int arr[], int i,int j){ if (i > j) return; int l = i - 1, r = j + 1; int k = arr[i]; while (l < r)//分别从左右两边与k相比较,比较后交换位置 { do l++; while (arr[l] <= k); do r--

2022-01-23 02:14:08 443

原创 acwing算法基础课学习心得-位运算

原码,反码与补码:补码等于反码加一假设a=10,则a转化为二进制a=1010.a的原码 a=1010a的反码 ~a=0101a的补码 -a=~a+1=0110//将一个数用二进制表示 #include<iostream>using namespace std;int main(){ int n=10; for(int i=3;i>=0;i--) { cout<<(n>>i&1)<<' ';

2022-01-18 01:42:46 376

空空如也

空空如也

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

TA关注的人

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