上一页 1 2 3 4 5 6 7 ··· 10 下一页
摘要: tire树用来快速查找一组字符串。 算法流程 int son[N][26], cnt[N], idx; char str[N]; // 插入和删除类似,每次从根节点入场,采用计数方法,0表示没有此节点,1表示存在节点。 void insert(char* str) { int p = 0; for( 阅读全文
posted @ 2023-11-21 18:55 深渊之巅 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 计数的思想,源自于计数排序。 计数就是把出现过的元素个数进行记录。在集合相关操作中,计数+1表示加入元素,计数-1表示删除元素。 我们在操作过程中,有时要对某些变量进行记录,记录出现的位置,记录上一次的值都是计数的思想。 本题我们采用计数的思想,记录每个字母出现的次数。s的长度为n。出现最多次字母的 阅读全文
posted @ 2023-11-21 18:47 深渊之巅 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 归并算法: 递归+合并,在递归的途中进行分治。递归会把区间越分越小,此时就可以进行分治操作。 可以使用全局变量进行分治操作。 可以在函数中进行分治操作,在递归树中实现pushup和pushdown,记性父节点与子节点的关系计算。 class Solution { public: struct Nod 阅读全文
posted @ 2023-11-20 20:22 深渊之巅 阅读(16) 评论(0) 推荐(0) 编辑
摘要: class Solution: def findMinimumOperations(self, s1: str, s2: str, s3: str) -> int: cnt = 0 for a, b, c in zip(s1, s2, s3): if not a == b == c: break c 阅读全文
posted @ 2023-11-20 09:24 深渊之巅 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 分块是一种暴力做法的优化。 基本思想是把要操作的对象分为根号n份,然后按份进行操作。 模板题: #include<bits/stdc++.h> using namespace std; typedef long long LL; const int N = 1e5 + 10; struct Node 阅读全文
posted @ 2023-11-19 15:26 深渊之巅 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 跳表RMQ算法 求解静态区间最值的一种算法。 f[i][j] 表示 从i出发,长度为2^j这一段区间的最大值。 初始化和递推: void init() { for(int j = 0; j < M; j ++ ) { for(int i = 1; i + (1 << j) - 1 <= n; i + 阅读全文
posted @ 2023-11-19 13:13 深渊之巅 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 离散化算法常用来解决负值问题和取值范围过大问题。 模板: 使用lower_bound或者库函数set,map来写 写法1.lower_bound速度快 // 把要进行离散化的值排序去重后放入alls数组中,用二分进行映射。int find(int x) { return lower_bound(al 阅读全文
posted @ 2023-11-19 10:01 深渊之巅 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 单调栈本质: 及时去掉无用数据, 保证栈中数据有序。 单调栈的思考方法,假设我们要找寻右侧第一个大于当前数字的数,就要将<=当前数的元素出栈。 当拿到一个问题时,要大的,剔除小的;要小的,剔除大的。 模板题: class Solution: def dailyTemperatures(self, t 阅读全文
posted @ 2023-11-18 10:32 深渊之巅 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 本题我们采用隔板法+容斥原理来解决 合格总方案数 = 总方案书 - 不合理的方案数 = 不考虑limit的方案数 - 不合法方案数(至少有一个小朋友 > limit) 任意方案数 n个小球放到3个盒子中 -> n + 2个位置,选两个位置放隔板剩下位置放球 c(n + 2, 2) 三个小朋友为:甲乙 阅读全文
posted @ 2023-11-12 21:11 深渊之巅 阅读(6) 评论(0) 推荐(0) 编辑
摘要: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 1010; int n, m; int v[N], w[N]; int f[101 阅读全文
posted @ 2023-11-12 20:46 深渊之巅 阅读(25) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 10 下一页