位运算 位运算主要内容low_bit返回的是一个整数的二进制形式最右边的“1”,比如对于(101011000)2 返回的是(1000)2 123int low_bit(int n){ return n&-n;} 例题low_bit二进制表示中1的个数 12345678910111213141516171819202122232425#include<bits/st 2025-01-25 寒假练题计划 > 基础算法 #cpp #algorithm #ACwing #binary
双指针 双指针算法主要内容双指针有很多种,第一类是两个指针在不同的序列上,比如归并排序的区间合并问题,还有一类是两个指针指向同一序列的不同位置来解决一些问题。主要遇到的是第二类。 针对第二类,一般可套用下面的模板。双指针实质上是根据问题的某种特性,比如单调性,来对朴素算法进行优化。 经典例题A+B123456789101112131415161718192021222324252627282930313 2025-01-24 寒假练题计划 > 基础算法 #cpp #algorithm #ACwing #double-pointer
差分 差分情景将区间[l,r]之间每个元素都加上一个数c,求修改后数组的值。 主要内容一维差分 二维差分 模板题一维差分12345678910111213141516171819202122232425262728293031323334353637#include<bits/stdc++.h>using namespace std;int n,q;const int N=1e5+5;int 2025-01-23 寒假练题计划 > 基础算法 #cpp #algorithm #ACwing #differential
前缀和 前缀和情景求区间[l,r]之间所有元素的和。 主要内容一维前缀和 二维前缀和 模板题https://blog.csdn.net/qq_44426403/article/details/134255195 一维前缀和123456789101112131415161718192021222324252627#include<bits/stdc++.h>using namespace std 2025-01-23 寒假练题计划 > 基础算法 #cpp #algorithm #ACwing #prefix sum
csp36-5 梦魔(30分) csp36-5 梦魔题干https://sim.csp.thusaac.com/contest/36/problem/4 30分作答12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717 2025-01-23 寒假练题计划 > scp认证真题 #cpp #algorithm #binary search #csp
高精度整数运算 高精度整数运算目的为了解决cpp语言整型变量存在范围,太大的整数会导致溢出。 存储方式 采用vector存储每一位数,一般从低位开始存,方便进位操作。 加法、减法、乘法都是从最低位算起的,但是除法得从最高位算起,保存的C数组也是反的,所以返回之前要转置。 高精度加法两个大整数相加。 1234567891011121314151617181920212223242526272829303132 2025-01-22 寒假练题计划 > 基础算法 #cpp #algorithm #ACwing #big integer
浮点二分 浮点二分浮点二分比整数二分简单得多,因为无需判断边界条件,只要设置精度即可。 设置精度标准:一般题目要求保留x位的话,精度加上2没有大问题。 模板1234567891011const double eps = 1e-9;double binary_search(double left, double right) { int l=left, r=right; while 2025-01-20 寒假练题计划 > 基础算法 #cpp #algorithm #ACwing #binary search
二分 二分查找模板12345678910111213141516171819202122232425bool check(int x){ //判断函数 return true}//[l,mid],[mid+1,r]int bsearch_1(int l,int r){ while (l<r) { int mid=l+r& 2025-01-19 寒假练题计划 > 基础算法 #cpp #algorithm #ACwing #binary search
归并排序 归并排序模板123456789101112131415161718192021222324int n;const int N=1e5+5;int a[N],tmp[N];void ms(int l,int r){ if(l>=r) return; int mid=l+r>>1; ms(l,mid); ms(mid+1,r); int k=0 2025-01-18 寒假练题计划 > 基础算法 #cpp #algorithm #ACwing #sort
快速排序 快速排序模板12345678910111213141516int n;int a[N];void qs(int l,int r){ if(l>=r) return;//判断递归退出 int x=a[(l+r)/2],i=l-1,j=r+1; while(i<j){ do i++; while(a[i]<x); do j--; whi 2025-01-18 寒假练题计划 > 基础算法 #cpp #algorithm #ACwing #sort