自定义博客皮肤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 203

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

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

2022-03-28 00:39:38 237

原创 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 348

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

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

2022-03-20 01:26:12 234

原创 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 285

原创 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 464

原创 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 138

原创 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 183

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

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

2022-03-11 13:21:14 282

原创 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 464

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

原码,反码与补码:补码等于反码加一 假设a=10,则a转化为二进制a=1010. a的原码 a=1010 a的反码 ~a=0101 a的补码 -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 395

空空如也

空空如也

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

TA关注的人

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