算法板子
12345678910111213141516171819202122232425262728293031323334353637#include <iostream>#include <cstdio>using namespace std;const int N = 1e8 + 9;int a[N], tmp[N];void merge_sort(int q[], int l, int r){ if(l >= r) return ; int mid = l + r >> 1; merge_sort(q, l, mid), merge_sort(q, mid + 1, r); int k = 1, i = l, j = mid + 1; while(i <= mid && j <= r) if(q[i] <= q[j]) tmp[k ++] = q[i ++]; else tmp[k ++] = q[j ++]; while(i <= mid) tmp[k ++] = ...
二分算法整数二分
和 y 总的模板一致,我们进行对二段性的分辨,然后看我们是要寻找什么值即可
12345678910111213141516171819202122232425262728293031323334#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>const int N = 2e5 + 9;int a[N], n, q;int bi_search(int x){ int l = 1, r = n; while(l < r) { int mid = l + r >> 1; if(a[mid] >= x) r = mid; else l = mid + 1; } if(a[l] == x) return l; else return -1;}int main(){ ...