
模板汇总
文章平均质量分 72
incredible_bly
这个作者很懒,什么都没留下…
展开
-
字符串模板总结(一):AC自动机
AC自动机主要解决多模式串匹配的问题,与dp有较多的结合。AC自动机本质是在tire树上建立如同kmp一样的失配边。所以建AC自动机首先要将模式串建成一颗tire树。//tire树const int maxn=100010;//最大结点总数const int sigma=26; //字符集大小,即字符值必须为0~sigma-1int ch[maxn][sigma]; /原创 2013-10-01 19:35:53 · 591 阅读 · 0 评论 -
字符串模板总结(二):字符串哈希
字符串哈希代码简单,思想也很好理解,在处理一些字符串问题时,非常之有效。其精髓就是一个在unsigned long long范围内的哈希函数typedef unsigned long long ULL;const int maxn=10000;const int x=123; //hash函数的参数ULL H[maxn]; //字符串hash值原创 2013-10-04 16:50:49 · 610 阅读 · 0 评论 -
字符串模板总结(三):KMP
KMP的重要性无需多言计算失配函数int f[maxn];void getfail(char* P){ int m=strlen(P); f[0]=0;f[1]=0; for(int i=1;i<m;i++) { int j=f[i]; while(j && P[i]!=P[j]) j=f[j]; f[原创 2013-10-15 16:06:52 · 503 阅读 · 0 评论 -
几何模板总结(一):二维基础
实数比较const double eps=1e-8;int dcmp(double x){ if(fabs(x)<eps) return 0; else return x<0?-1:1;}点和向量的定义struct point{ double x,y; point(double x=0,double y=0):x(x),y(y){}原创 2013-10-24 13:54:35 · 665 阅读 · 0 评论 -
字符串模板总结(四):后缀数组
后缀数组是处理字符串问题常用的工具之一,只不过我当时学的时候不求甚解,所以对于其中实现的计数排序,不是特别的懂,只会逃一个模板,把后缀数组sa求出来。int s[maxn]; //待构造字符串int sa[maxn]; //后缀数组int t[maxn],t2[maxn],c[maxn]; //辅助数组//每个原创 2013-10-22 15:48:14 · 707 阅读 · 0 评论 -
字符串模板总结(五):后缀自动机
CLJ大神的后缀自动机,异常的强大,只不过也不太好理解。只能勉强把构造过程弄懂,其中很多性质还不是特别明白……char s[maxn]; //待构造字符串int sz; //状态个数struct state{ state *pre; //前继结点,表示最近的添完上一字符后的终止原创 2013-10-22 21:46:47 · 1135 阅读 · 0 评论 -
几何模板总结(二):点在多边形内判定(转角法)
直接上模板吧,适用于任何类型的多边形(顺时针,逆时针,凹,凸)//p为点,poly为多边形int isinpoly(point p,vector poly){ int wn=0; int n=poly.size(); for(int i=0;i<n;i++) { if(onseg(p,poly[i],poly[(i+1)%n])) ret原创 2013-11-07 21:16:25 · 2401 阅读 · 0 评论