摘要:
计算几何基础 const double eps=1e-6; const double inf=1e20; const double pi=acos(-1.0); //符号函数 int sgn(double x){ if(fabs(x)<eps) return 0; if(x>0) return 1; 阅读全文
摘要:
预处理 时间复杂度$O(n\log n)$ 区间最值查询 时间复杂度$O(1)$ int a[1010],st[1010][15],mini[1010]; void rmq_init(int n){ for(int i=1;i<=n;i++) st[i][0]=a[i]; for(int j=1;( 阅读全文
摘要:
AC自动机应用于多模式串匹配,时间复杂度$O(n)$,其中$n$为文本串长度 AC自动机是在Trie上实现kmp,如果当前节点匹配失败,则从当前节点的fail指针指向的节点开始继续匹配 fail数组的构建可以通过bfs实现 const int maxn=1000010,maxm=10010,maxn 阅读全文
摘要:
计算出字符串中以每个字符为对称中心的最长回文串的长度加$1$的值。 时间复杂度为$O(n)$。 #include<bits/stdc++.h> #define LL long long #define PII pair<int,int> #define PLI pair<LL,int> #defin 阅读全文
摘要:
结论 通过NEXT数组,可以得到字符串的最小循环节。 设字符串s的结尾下标为i,NEXT[i]=j,如果$\left{\beginj\ne0\i%(i-j)==0\end\right.$成立,那么s[j+1,i]就是字符串的最小循环节。 简要说明 ———————— 1 x j ———————— y 阅读全文
摘要:
模板题:hdu1711 Number Sequence hdu1686 Oulipo //字符串下标从1开始,n表示文本串的长度,m表示模式串的长度 int n,m,fail[10010]; char s[1000010],p[10010]; void get_fail(){ for(int i=2 阅读全文
摘要:
最小费用流:在网络中为每条边加上一个费用,当流量固定为F时费用的最小值。 模板一:通过Bellman-Ford算法计算最短路,并且沿着最短路增广。 时间复杂度为$O(F|V||E|)$ const int maxn=1010,inf=0x3f3f3f3f; struct edge{ int to,c 阅读全文
摘要:
dinic算法加上当前弧优化计算最大流 #include<bits/stdc++.h> #define LL long long #define PII pair<int,int> #define PLI pair<LL,int>;v #define lson o<<1,l,mid #define 阅读全文
摘要:
匈牙利算法 模板一:使用邻接矩阵 时间复杂度$O(n^3)$ const int maxn=510; int n,m,line[maxn][maxn],match[maxn],book[maxn]; bool find(int u){ for(int i=1;i<=m;i++){ if(line[u 阅读全文
摘要:
hdu2842 Chinese Rings 传送门 题意 一根木棒上穿了n枚戒指,第一枚戒指取下或者套上需要一步,第k+2枚戒指取下或者套上需要前k枚戒指取下,并且第k+1枚戒指未取下,消耗一步。求出取下n枚戒指所需要的最小步数。 题解 设取下前n枚戒指所需要的最小步数为f(n),则取下第n枚戒指需 阅读全文