随笔分类 -  算法

摘要:[acwing]291. 蒙德里安的梦想 /* 横放的方案数就等于总方案数,因为横着放完后,再竖着放是唯一的 dp[i][j] 表示第 i 列状态为 j 的方案数 状态为 j 是指:各行用 0 或 1 表示摆放状态 :若某行为 0,表示竖放或由前一列伸出 :若某行为 1,表示横放并向后一列伸出 dp 阅读全文

posted @ 2023-04-04 22:00 lyc2002 阅读(30) 评论(0) 推荐(0)

摘要:[acwing]4405 .统计子矩阵 #include <cstdio> using namespace std; typedef long long LL; const int N = 510; int n, m, k; int s[N][N]; LL res; int main() { sca 阅读全文

posted @ 2023-04-03 22:02 lyc2002 阅读(21) 评论(0) 推荐(0)

摘要:能解决什么问题 一般是给出 n 个递减的等差数列,要求对于所有等差数列中前 m 个大的数的和 时间复杂度 O(m * logn) [acwing]1262. 鱼塘钓鱼 #include <cstdio> #include <cstring> #include <algorithm> #include 阅读全文

posted @ 2023-04-01 17:19 lyc2002 阅读(51) 评论(0) 推荐(0)

摘要:快速排序 算法思想 找一个主元 x 从左边找 >= x 的数,从右边找 <= x 的数然后交换位置 递归地处理左右两部分 时间复杂度 O(n logn) 代码 void quick_sort(int q[], int l, int r) { if (l >= r) return; int i = l 阅读全文

posted @ 2023-03-21 21:09 lyc2002 阅读(30) 评论(0) 推荐(0)

摘要:[acwing]3421.异或数列 /* A ^ B = X1 ^ X2 ^ ... ^ Xn 如果结果为 0,说明 A == B,平局 如果结果不为 0,只需要看结果的二进制形式最高位的 1 是谁拿到的 one[i] 记录所有 X 中位 i 为 1 的个数 zero[i] 记录所有 X 中位 i 阅读全文

posted @ 2023-03-16 21:25 lyc2002 阅读(34) 评论(0) 推荐(0)

摘要:求组合数 typedef long long LL; // 最大 C(66, 33) LL C(int a, int b) { LL res = 1; for (int i = a, j = 1; j <= b; i--, j++) { res = res * i / j; } return res 阅读全文

posted @ 2023-03-14 23:03 lyc2002 阅读(25) 评论(0) 推荐(0)

摘要:快速得到一个数字的位数 int len = to_string(num).size(); 有限制的选择问题就是背包问题 无向边才可用并查集来做,有向边不行 阅读全文

posted @ 2023-03-12 18:13 lyc2002 阅读(39) 评论(0) 推荐(0)

摘要:拉链法 const int N = 100003; // 一般取数的个数的下一个质数 int h[N], e[N], ne[N], idx; memset(h, -1, sizeof(h)); // 添加一个数 void add(int x) { int k = (x % N + N) % N; e 阅读全文

posted @ 2023-03-11 21:14 lyc2002 阅读(39) 评论(0) 推荐(0)

摘要:![](https://img2023.cnblogs.com/blog/2715571/202303/2715571-20230307205256604-546504558.png) 阅读全文

posted @ 2023-03-07 20:53 lyc2002 阅读(214) 评论(0) 推荐(0)

摘要:[acwing]1222.密码脱落 /* 有多少个前后不配对的字符,就说明脱落了多少个,即总长度减去回文子序列的长度 dp[i][j] 表示 str[i, j] 的最长回文子序列的长度 如果 str[i] == str[j],dp[i][j] = dp[i + 1][j - 1] + 2 否则,dp 阅读全文

posted @ 2023-03-02 17:48 lyc2002 阅读(24) 评论(0) 推荐(0)

摘要:[acwing]1047.糖果 /* dp[i][j] 表示只考虑前 i 件物品,模 k 余 j 的最大价值 如果不取第 i 件物品,dp[i][j] = dp[i - 1][j] 如果取第 i 件物品,dp[i][j] = dp[i - 1][((j - v[i]) % k + k) % k] + 阅读全文

posted @ 2023-03-01 23:22 lyc2002 阅读(28) 评论(0) 推荐(0)

摘要:[acwing]1023.小明买书 /* dp[i][j] 表示只考虑前 i 个物品,其价值恰好为 j 的方案个数 dp[i][j] 可从选多少个第 i 个物品推导出来,假设最多能选 s 个 如果选 0 个第 i 个物品,dp[i][j] = dp[i - 1][j - vi * 0] 如果选 1 阅读全文

posted @ 2023-03-01 20:53 lyc2002 阅读(34) 评论(0) 推荐(0)

摘要:#include <cstdio> #include <cstring> #include <stack> #include <unordered_map> using namespace std; const int N = 100010; char str[N]; stack<int> num; 阅读全文

posted @ 2023-02-25 22:19 lyc2002 阅读(41) 评论(0) 推荐(0)

摘要:扩展欧几里得算法 代码 typedef long long LL; LL exgcd(int a, int b, int &x, int &y) { if (b == 0) { x = 1, y = 0; return a; } LL d = exgcd(b, a % b, y, x); y -= 阅读全文

posted @ 2023-02-24 19:59 lyc2002 阅读(21) 评论(0) 推荐(0)

摘要:试除法求约数 时间复杂度 O(√n) 代码 vector<int> get_divisors(int x) { vector<int> res; for (int i = 1; i <= x / i; i++) if (x % i == 0) { res.push_back(i); if (i != 阅读全文

posted @ 2023-02-24 15:24 lyc2002 阅读(50) 评论(0) 推荐(0)

摘要:试除法判断质数 时间复杂度 O(√n) 代码 bool is_prime(int x) { if (x == 1) return false; for (int i = 2; i <= x / i; i++) if (x % i == 0) return false; return true; } 阅读全文

posted @ 2023-02-23 22:04 lyc2002 阅读(28) 评论(0) 推荐(0)

摘要:时间复杂度 O(log max(a, b)) 最大公约数 代码 int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } 最小公倍数 代码 int lcm(int a ,int b) { return a * b / gcd(b, a 阅读全文

posted @ 2023-02-22 16:58 lyc2002 阅读(37) 评论(0) 推荐(0)

摘要:代码 求区间交集 void get_intersection(vector<PII> &segs) { vector<PII> res; sort(segs.begin(), segs.end()); int l = -2e9, r = 2e9; for (auto seg : segs) { if 阅读全文

posted @ 2023-02-19 16:21 lyc2002 阅读(51) 评论(0) 推荐(0)

摘要:能解决什么问题 找出树中最长的路径 算法思想 任取一点,求该点到其他点的距离,找到离它最远的点 u 求 u 到其他点的距离,找到离 u 最远的点 v u -> v 就是树的最长路径 由反证法易证:u 是树直径的一个端点 代码 bfs(1); int u = -1; for (int i = 1; i 阅读全文

posted @ 2023-02-18 21:09 lyc2002 阅读(23) 评论(0) 推荐(0)

摘要:稠密图 int g[N][N]; 稀疏图 边的条数|E|远小于|V|²的图称为稀疏图 // 对于每个点 k,开一个单链表,存储k所有可以走到的点。h[k] 存储这个单链表的尾结点 int h[N], e[N], ne[N], idx; // 添加一条边a->b void add(int a, int 阅读全文

posted @ 2023-02-18 20:27 lyc2002 阅读(29) 评论(0) 推荐(0)