个人学习记录留档_算法
空
直到恒星内核反应殆尽
这个作者很懒,什么都没留下…
展开
-
完全背包/0-1背包/多重背包
#include <bits/stdc++.h> using namespace std; //完全背包 int competebp(vector<int> value, vector<int> weigh, int W) { int kinds = value.size(); int dp[W + 1] = {0}; for (int i = 0; i < kinds; i++) for (int j = 0; j &l原创 2022-03-25 00:15:00 · 278 阅读 · 0 评论 -
字符串相关算法/KMP/LCS(个人留档)
KMP字符串匹配 int *getnext(string s2) { int len = s2.size(); int *next = new int[len]; next[0] = -1; int j = 0, k = -1; while (j < len) { if (k == -1 || s2[j] == s2[k]) { j++; k++; n原创 2022-03-25 00:00:00 · 106 阅读 · 0 评论 -
Manacher
马拉车 //转换原始串 int INIT(char *st) { int i, len = strlen(st); tmp[0] = '@';//字符串开头增加一个特殊字符,防止越界 for (i = 1; i <= 2 * len; i += 2) { tmp[i] = '#'; tmp[i + 1] = st[i / 2]; } tmp[2 * len + 1] = '#'; tmp[2 * len + 2] = '$';//字符串结尾加一个字符,防止越界 tmp[2 *原创 2022-03-24 23:30:00 · 52 阅读 · 0 评论 -
筛法求素数
朴素筛素数 //朴素筛素数 int primes[N], cnt; // primes[]存储所有素数 bool st[N]; // st[x]存储x是否被筛掉 void get_primes(int n) { for (int i = 2; i <= n; i ++ ) { if (st[i]) continue; primes[cnt ++ ] = i; for (int j = i + i; j <=原创 2022-03-24 23:30:00 · 61 阅读 · 0 评论 -
卡特兰数/斯特林数/卢卡斯定理
卡特兰数 //卡特兰数 #include <bits/stdc++.h> using namespace std; int f[20]; int n; int main() { cin >> n; f[0] = f[1] = 1; for (int i = 2; i <= n; i++) { for (int j = 0; j < i; j++) { f[i] += f[j] *原创 2022-03-24 23:30:00 · 127 阅读 · 0 评论