
基本算法
基础算法
Charming Boy
苟有恒,何必三更眠五更起;
最无益,莫过一日曝十日寒。
展开
-
位运算
文章目录位运算类型常用操作原码、反码、补码 位运算类型 位运算是在二进制中的运算方式,其他进制的数在进行位运算时都要先转化成二进制。 位运包括按位与(&)、按位或(|)、按位异或(^)、取反( ~ )、左移(<<)、右移(>>).其中除了取反(~),其他都是双目运算符(运算符左右都有一个运算量) 按位与(&) 1 & 1 = 1 1 &...原创 2020-02-12 17:17:56 · 249 阅读 · 0 评论 -
一维差分、差分矩阵
文章目录差分二维差分(差分矩阵) 差分 差分是一种支持进行区间大量修改的操作,其实就是前缀和的逆运算,例如数组a[6] = {1,2,3,4,5,6},b[6] = {1,1,1,1,1,1} ,b[i] = a[i] - a[i - 1],可以得出:a[1] = b[1],a[2] = b[1] + b[2],…;b[i]的前缀和等于a[i],这所以说,差分就是前缀和的逆运算。 例题: 输入一个...原创 2020-02-10 14:34:31 · 666 阅读 · 0 评论 -
一维、二维前缀和
一维前缀和 输入一个长度为n的整数序列。 接下来再输入m个询问,每个询问输入一对l, r。 对于每个询问,输出原序列中从第l个数到第r个数的和。 输入格式 第一行包含两个整数n和m。 第二行包含n个整数,表示整数数列。 接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。 输出格式 共m行,每行输出一个询问的结果。 数据范围 1≤l≤r≤n, 1≤n,m≤100000, −1000≤数列中...原创 2020-02-10 11:21:05 · 334 阅读 · 0 评论 -
高精度算法
当就算是long long(或int64)还不够怎么办?用高精度算法。自己动手丰衣足食。——洛谷hh 文章目录高精度加法高精度减法高精度乘法(洛谷)高精度乘低精度高精度除法(高精/低) 高精度加法 #include<iostream> #include<vector> using namespace std; //C = A + B; vector<int> a...原创 2020-02-10 10:42:24 · 343 阅读 · 0 评论 -
二分查找及模板
文章目录整数二分实数二分 整数二分 整数二分分为两种,根据取mid位置的不同,不断更新 l 和 r 即可 区间[l,r]被划分成[l,mid]和[mid+1,r]时 int search_1(int l,int r) { while(l < r) { int mid = (l + r)/2; if(check(mid)) r=mid;//check()判断mid是否满...原创 2020-02-03 20:18:00 · 197 阅读 · 0 评论 -
明明随机数,快排,去重
题目链接:https://www.luogu.com.cn/problem/P1059 这个题算是快速排序的一个练习吧(不用STL sort()的情况下),可以熟悉快速排序的模板 #include<iostream> #include<cstdio> using namespace std; const int N = 1e6+10; int n,sum; int q[N...原创 2020-02-03 20:16:26 · 336 阅读 · 0 评论