会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
懒羊羊爱吃灰太狼
博客园
首页
新随笔
联系
订阅
管理
2024年9月4日
KMP 算法
摘要: \(Question:\) 给定一个模式串P和一个主串S, 求模式串P在主串S中出现的位置(字符串下标均从1开始) \(Solution:\) 模式串中 next 函数 next[i] 表示模式串 P[1, i]中相等前后缀的最长长度 运用双指针:i 扫描模式串, j 扫描前缀 初始化 ne[1]
阅读全文
posted @ 2024-09-04 21:51 懒羊羊爱吃灰太狼
阅读(9)
评论(0)
推荐(0)
2024年8月21日
单源最短路 - Dijkstra 算法 / SPFA 算法
摘要: Dijkstra(迪杰斯特拉)算法是基于贪心思想的单源最短路算法 暴力 Dijkstra 具体如下: struct node { int v, w; }; vector<node> e[N]; int dist[N], vis[N]; e[u] 存的是节点 u 的所有出边的终点和边权,dist[u]
阅读全文
posted @ 2024-08-21 18:41 懒羊羊爱吃灰太狼
阅读(28)
评论(0)
推荐(0)
2024年8月20日
拓扑排序
摘要: 拓扑排序(所有点按照先后顺序排成序列) 注:图必须是有向无环图 Kahn (卡恩) 算法 核心思想:用队列维护一个入度为0的节点的集合 具体代码如下: vector<int> e[N], tp; int din[N]; e[x] 用来存点 x 的邻点,tp 存拓扑序列,din[x] 用来存点x的入度
阅读全文
posted @ 2024-08-20 11:02 懒羊羊爱吃灰太狼
阅读(32)
评论(0)
推荐(0)
2024年8月17日
质数筛
摘要: 判断一个数是不是质数,最基础的方法: bool isprime(int n) { if(n <= 1) return 0; for(int i = 2; i <= sqrt(n); i ++) { if(n % i == 0) return 0; } return 1; } 这个方法虽然能判断是不是
阅读全文
posted @ 2024-08-17 17:43 懒羊羊爱吃灰太狼
阅读(15)
评论(0)
推荐(0)
快速幂
摘要: 求快速幂的两种方法: 第一种: ll fastpow(ll a,ll b) //快速幂(时间复杂度为o(logn)) { if(b == 1) return a; ll temp = fastpow(a, b / 2); if(b % 2 == 1) return temp * temp % mod
阅读全文
posted @ 2024-08-17 17:15 懒羊羊爱吃灰太狼
阅读(12)
评论(0)
推荐(0)
2024年8月10日
逆元
摘要: 逆元用于求 $ \frac{a}{b} (mod\ p)$ 的结果 第一种方法:拓展欧几里得 利用拓欧求解同余方程:\(a*x ≡ c\ (mod\ b)\) 的 \(c = 1\) 的情况 就可以转化成求解 \(a*x+b*y=1\) 这个方程 void exgcd(ll a,ll b,ll &x
阅读全文
posted @ 2024-08-10 09:44 懒羊羊爱吃灰太狼
阅读(17)
评论(0)
推荐(0)
2024年7月30日
ST表
摘要: 解决\(RMQ(Range\ Minimum/Maximum\ Query)\) 即区间最值查询问题 \(RMQ\)算法一般用较长时间做预处理, 时间复杂度为\(o(nlogn)\), 然后可以用\(o(1)\)的时间解决每一次查询 预处理部分 我们设二维数组 \(dp[i][j]\) 表示从第\(
阅读全文
posted @ 2024-07-30 21:46 懒羊羊爱吃灰太狼
阅读(16)
评论(0)
推荐(0)
2024年7月24日
归并排序
摘要: 时间复杂度 \(o(nlogn)\) 空间复杂度 \(o(n)\) 模板: #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int n; int a[N], b[N]; // 合并 void merge(in
阅读全文
posted @ 2024-07-24 15:12 懒羊羊爱吃灰太狼
阅读(7)
评论(0)
推荐(0)
2024年5月13日
树状数组
摘要: 一般用于单点修改,区间查询 模板: const int N = 1e6 + 10; int tree[N]; int lowbit(int x) { return x & -x; } void add(int x, int k) { // 修改 while(x <= n) { tree[x] +=
阅读全文
posted @ 2024-05-13 18:29 懒羊羊爱吃灰太狼
阅读(14)
评论(0)
推荐(0)
2024年3月18日
搜索(Search)
摘要: 简单的自我理解
阅读全文
posted @ 2024-03-18 23:09 懒羊羊爱吃灰太狼
阅读(42)
评论(0)
推荐(0)
下一页
公告