算法梳理
在此专栏中梳理了大学三年中学到的所有算法,会从基础的开始梳理
Feriii
这个作者很懒,什么都没留下…
展开
-
差分&&差分矩阵——C++
差分输入一个长度为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 31 2 2 1原创 2020-11-27 21:30:41 · 755 阅读 · 0 评论 -
前缀和算法——一维前缀和&&二维前缀和
一维前缀和输入一个长度为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输出样例:3610#原创 2020-11-27 21:27:17 · 420 阅读 · 0 评论 -
快速排序——C++
#include <iostream>using namespace std;const int N = 1e6 + 10; int n = 0;int q[N];void quick_sort(int q[], int l, int r){ if (l >= r) { return; // 判断边界,如果区间里面只有一个数或者没有数就直接返回 } int x = q[l], i = l - 1, j = r + 1; /原创 2020-11-27 21:23:04 · 200 阅读 · 0 评论 -
归并排序——C++
#include <iostream>原创 2020-11-27 21:22:35 · 92 阅读 · 0 评论 -
离散化——求区间和
离散化——求区间和假定有一个无限长的数轴,数轴上每个坐标上的数都是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≤r≤109,−1原创 2020-11-27 21:20:14 · 372 阅读 · 0 评论 -
二分算法——c++
#include <iostream>bool check(int);// 区间[l, r]区间被划分成[l, mid - 1], 和 [mid, r]时int bsearch_1(int l, int r){ while (l < r) { int mid = (l + r +1) >> 1;// 上取整; if (check(mid)) { l = mid; } else {原创 2020-11-27 21:18:10 · 279 阅读 · 0 评论