多串匹配 #include <iostream> #include <cstring> #include <queue> using namespace std; int n,m; const int N = 1145140; struct node { int fail;//失败跳转 int end;//以该点…
迪杰特斯拉 d[i]表示从起点到第i号节点最短路径 v[i]表示该节点是否访问过 d[1]初始化为0,其他为极大值 每个节点只能访问一次,访问时先打标记 每次取出d最小的节点,遍历该节点的所有边连接的点,用当前节点的值加上边的权值,与被更新节点的d进行比较,如果更小则更新。 使用优先队列可以实现快速取出d最小的节点 不能解决负权边的问题,因为迪杰特…
线性动规 将整体划分为区间,小区间合并为大区间 P1063 [NOIP2006 提高组] 能量项链 [NOIP2006 提高组] 能量项链 题目描述 在 Mars 星球上,每个 Mars 人都随身佩带着一串能量项链。在项链上有 N 颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一…
费马小定理 a^{p-1} \equiv 1\pmod{p} 欧拉函数 对于正整数n,\phi=小于等于n的数中与n互质的数的个数。\phi就表示欧拉函数 举个栗子,\phi(6)=2,因为从到6中,与6互素的只有1,5。同样的,6的一个完全剩余系是0,1,2,3,4,5,\phi (n)还可以表示n的简化剩余系的元素个数,也是2 公式:\phi …
图的存储 链式前向星 #include <iostream> #include <algorithm> #include <cstring> const int N = 5 * 10e5; int head[N]; struct node { int to,w,nxt; }edge[N],temp[N]; boo…
模拟匹配法 程序优化 1.固定i的位置 2.匹配失败时待匹配数组尽量向右挪动 情景模拟 文本串: BBC_ABCDAB_ABCDABCDABDE 模式串: ABCDABD 匹配失败时,希望向右跳的尽量远 i = 4 , j = 6 时,s[i+j] 与 p[j]匹配失败 BBC_ ABCDABABCDABCDABDE ABCDABD BBC ABC…
准备 8.210.x.x 香港阿里云 负载均衡根节点 2c2g 20.2.x.x Azure 香港 子节点1 4c16g 172.207.x.x Azure 日本 子节点2 1c1g 宝塔企业版(开心版:https://install.baota.sbs) 具体原理 用户请求根节点,然后根节点根据子节点占用情况分配服务资源,让用户请求可以及时被响应…
查询一个字符串是否存在 #include <iostream> #include <cstring> #include <stdlib.h> int n,m; const int N = 1145140; struct node { bool flag;//以该点为结尾 int child[30]; }T[N];…
单点修改区间查询 #include <iostream> #include <vector> #define lc(x) (x * 2 + 1) #define rc(x) (x * 2 + 2) int n,m; int siz; std :: vector<int>a; std :: vector<lo…
单点修改区间查询 #include <iostream> #define l(x) (x & -x); const int N = 1000000 + 5000; int n,m; long long a[N]; void add(int x,int v)//在x节点添加v { while (x <= N) { a[x] …