![](https://img-blog.csdnimg.cn/20210830095315813.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
第一讲 基础算法
包括排序、二分、高精度、前缀和与差分、双指针算法、位运算、离散化、区间合并等内容。
falldeep
远和近
展开
-
二分查找板子(C++)
区间[l, r]被划分为[l,mid-1]和[mid,r]时使用 寻找右端点时用原创 2022-12-06 09:48:12 · 650 阅读 · 1 评论 -
由数据范围反推算法复杂度以及算法内容
转载至由数据范围反推算法复杂度以及算法内容 - AcWingcm转载 2022-04-03 11:39:09 · 56 阅读 · 0 评论 -
二分法c++
//区间[l, r]被划分为[l,mid]和[mid+1,r]时使用 左端点int bsearch_1(int l, int r){ while(l < r) { int mid = l + r >> 1; if(check(mid)) r=mid; else l = mid + 1; } return l;}原创 2021-06-19 23:09:26 · 144 阅读 · 0 评论 -
差分C++(acwing复习题)
题目输入一个长度为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≤整数序列中元素...原创 2021-06-22 13:34:09 · 317 阅读 · 0 评论 -
前缀和C++(acwing复习题)
题目输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l,r。对于每个询问,输出原序列中从第ll个数到第rr个数的和。输入格式第一行包含两个整数nn和mm。第二行包含nn个整数,表示整数数列。接下来mm行,每行包含两个整数ll和rr,表示一个询问的区间范围。输出格式共mm行,每行输出一个询问的结果。数据范围1≤l≤r≤n1≤l≤r≤n,1≤n,m≤1000001≤n,m≤100000,−1000≤数列中...原创 2021-06-21 12:37:04 · 195 阅读 · 0 评论 -
第k个数(acwing复习)快排算法题
#include<iostream> using namespace std;const int N =1e5 + 10;int n, k;int q[N];int quick_sort(int l ,int r ,int k){ if(l == r) return q[l]; int x = q[l], i = l - 1 , j = r + 1; while(i < j) { while (q[ ++i] < x); while (q[ .原创 2021-06-17 19:09:24 · 110 阅读 · 0 评论 -
789. 数的范围(acwing复习)
给定一个按照升序排列的长度为nn的整数数组,以及qq个查询。对于每个查询,返回一个元素kk的起始位置和终止位置(位置从00开始计数)。如果数组中不存在该元素,则返回-1 -1。输入格式第一行包含整数nn和qq,表示数组长度和询问个数。第二行包含nn个整数(均在1∼100001∼10000范围内),表示完整数组。接下来qq行,每行包含一个整数kk,表示一个询问元素。输出格式共qq行,每行包含两个整数,表示所求元素的起始位置和终止位置。...原创 2021-06-19 23:31:45 · 113 阅读 · 0 评论 -
归并排序(acwing复习题)
给定你一个长度为nn的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数nn。第二行包含nn个整数(所有整数均在1∼1091∼109范围内),表示整个数列。输出格式输出共一行,包含nn个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5...原创 2021-06-19 12:12:36 · 137 阅读 · 0 评论 -
高精度加法C++(acwing复习题)
给定两个正整数,计算它们的和。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的和。数据范围1≤整数长度≤100000输入样例:1223输出样例:35原创 2021-06-21 01:02:04 · 185 阅读 · 0 评论 -
差分矩阵(acwing复习题)
题目输入一个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...原创 2021-06-22 22:29:07 · 112 阅读 · 0 评论 -
高精度减法C++(acwing复习)
给定两个正整数,计算它们的差,计算结果可能为负数。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的差。数据范围1≤整数长度≤1051≤整数长度≤105输入样例:3211输出样例:21...原创 2021-06-21 01:08:09 · 139 阅读 · 0 评论 -
子矩阵的和(acwing复习题)
题目输入一个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≤...原创 2021-06-22 13:01:38 · 206 阅读 · 0 评论 -
最长连续不重复子序列(acwing复习题)
题目给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0∼105 范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤105输入样例:51 2 2 3 5输出样例:3代码#include<iostream>using namespace std;const int N =...原创 2021-06-23 00:07:19 · 127 阅读 · 0 评论 -
二进制中1的个数c++(acwing复习题)
题目给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。输入格式第一行包含整数n。第二行包含n个整数,表示整个数列。输出格式共一行,包含n个整数,其中的第i个数表示数列中的第i个数的二进制表示中1的个数。数据范围1≤n≤100000,0≤数列中元素的值≤109输入样例:51 2 3 4 5输出样例:1 1 2 1 2代码#include<iostream>using namesp...原创 2021-06-23 01:09:33 · 158 阅读 · 0 评论 -
高精度除法C++(acwing复习)
给定两个非负整数A,B,请你计算A/B 的商和余数。输入格式共两行,第一行包含整数A,第二行包含整数B。输出格式共两行,第一行输出所求的商,第二行输出所求余数。数据范围1≤A的长度≤1000001≤A的长度≤100000,1≤B≤100001≤B≤10000,BB一定不为00输入样例:72输出样例:31...原创 2021-06-21 11:36:46 · 216 阅读 · 0 评论 -
790. 数的三次方根(acwing复习)
题目给定一个浮点数nn,求它的三次方根。输入格式共一行,包含一个浮点数nn。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留66位小数。数据范围−10000≤n≤10000−10000≤n≤10000输入样例:1000.00输出样例:10.000000...原创 2021-06-19 23:43:13 · 113 阅读 · 0 评论 -
高精度乘法C++(acwing复习题)
给定两个正整数AA和BB,请你计算A×B的值。输入格式共两行,第一行包含整数AA,第二行包含整数BB。输出格式共一行,包含A×BA×B的值。数据范围1≤A的长度≤1000001≤A的长度≤100000,0≤B≤100000≤B≤10000输入样例:23输出样例:6...原创 2021-06-21 10:54:56 · 147 阅读 · 0 评论 -
快速排序(acwing复习)
快速排序的实现和代码及注释,可直接提交acwing通过。原创 2021-06-17 18:55:26 · 212 阅读 · 0 评论 -
788. 逆序对的数量(acwing复习)
给定一个长度为nn的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第ii个和第jj个元素,如果满足i<ji<j且a[i]>a[j]a[i]>a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数nn,表示数列的长度。第二行包含nn个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤1000001≤n≤100000输入样例:62 3 4 5 6 1输出样例:...原创 2021-06-19 12:31:10 · 87 阅读 · 0 评论 -
判断子序列c++(acwing)
题目给定一个长度为n的整数序列a1,a2,…,an 以及一个长度为m的整数序列b1,b2,…,bm。请你判断a序列是否为b序列的子序列。子序列指序列的一部分项按原有次序排列而得的序列,例如序列{a1,a3,a5} 是序列{a1,a2,a3,a4,a5}的一个子序列。输入格式第一行包含两个整数n,m。第二行包含nn个整数,表示a1,a2,…,an。第三行包含mm个整数,表示b1,b2,…,bm。输出格式如果a序列是b序列的子序列...原创 2021-06-23 00:45:48 · 855 阅读 · 0 评论 -
数组元素的目标和C++(acwing)
题目给定两个升序排序的有序数组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输入样例:...原创 2021-06-23 00:26:56 · 178 阅读 · 0 评论 -
区间和c++(acwing复习题)
题目假定有一个无限长的数轴,数轴上每个坐标上的数都是0。现在,我们首先进行n次操作,每次操作将某一位置x上的数加c。接下来,进行m次询问,每个询问包含两个整数l和r,你需要求出在区间[l,r] 之间的所有数的和。输入格式第一行包含两个整数n和m。接下来n行,每行包含两个整数x和c。再接下来m行,每行包含两个整数 l和r。输出格式共m行,每行输出一个询问中所求的区间内数字和。数据范围−109≤x≤109,1≤n,...原创 2021-06-23 12:56:40 · 274 阅读 · 0 评论 -
区间合并C++(acwing复习题)
题目给定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输出样例:...原创 2021-06-23 13:22:17 · 237 阅读 · 0 评论