随笔分类 - AcWing算法基础课
AcWing算法基础课学习笔记
摘要:背包问题 01背包 (1). 二维dp #include<iostream> using namespace std; const int N = 1010; int m, n; int V[N], W[N]; int f[N][N]; //f[i][j]表示从i个物品中选,容量不超过j的最大价值
阅读全文
摘要:DFS AcWing 842. 排列数字 #include <iostream> using namespace std; const int N = 10; int n; int path[N], st[N]; void dfs(int u) { if (u == n) { for (int i
阅读全文
摘要:### 整数n的二进制数的第k位数```n >> k & 1``` ### lowbit运算```lowbit(x)x & (~x + 1) = x & (-x)``` ### AcWing 801. 二进制中1的个数```#include <iostream> using namespace st
阅读全文
摘要:双指针模板 for (int i = 0, j = 0; i < n; i ++ ) { while (j < i && check(i, j)) j ++ ; // 具体问题的逻辑 } AcWing 799. 最长连续不重复子序列 #include <iostream> using namespa
阅读全文
摘要:前缀和 思路:求l到r区间的和用前r个数减去前l - 1个数. #include <iostream> using namespace std; const int N = 100010; int a[N], s[N]; int main() { int n, m; scanf("%d%d", &n
阅读全文
摘要:整数二分模板 l = mid这个模板mid需要+1 int bsearch_1(int l, int r) { while (l < r) { int mid = l + r >> 1; if (check(mid)) r = mid; // check()判断mid是否满足性质 else l =
阅读全文
摘要:###快速排序 步骤 确定分界点:q[l], q[(l+r)/2], q[r], 随机 调整区间 递归处理 void quick_sort(int q[], int l, int r) { if (l >= r) return; //递归结束条件 int i = l - 1, j = r + 1,
阅读全文