都是從網上找的,交過題試過的應該沒問題的模板。
kmp
//未優化的next函式
void getnext(char s,int
next)
else
j=next[j];
}}//
已優化的next函式
void getnextval(char s,int
nextval)
else
j=nextval[j];
}}//
kmpint kmp( char *t, char *s ) //
s為主串,t為模式串
else i =nextval[i];
}return -1
;}
擴充套件kmp
#include#includeusing
namespace
std;
const
int mm=100005
;int
next[mm],extand[mm];
char
s[mm],t[mm];
void getnext(const
char *t)
else
next[k]=l;
} } void getextand(const
char *s,const
char *t)
else
extand[k]=l;
} } int
main()
return0;
}
ac自動機
#include #include#include
#include
using
namespace
std;
const
int max_node = 1010
;const
int child_num = 4
;const
int maxn = 12
;const
int inf = 1
<< 30
;struct
acautomaton
//重新建樹需先reset
void
reset()
//將權值為key的字串a插入到trie中
void insert(char *a,int
key)
p =chd[p][c];
}val[p] =key;
}//建立ac自動機,確定每個節點的權值以及狀態轉移
void
construct()
}while (s !=e)
else}}
}} ac;
字尾陣列
//rank從0開始
//sa從1開始,因為最後乙個字元(最小的)排在第0位
//high從2開始,因為表示的是sa[i-1]和sa[i]
#define m 220000
intrank[m],sa[m],x[m],y[m],high[m],init[m];
intbuc[m];
void calhigh(int
n) bool cmp(int *r,int a,int b,int
l) void suffix(int n,int m = 128
) calhigh(n-1);//
字尾陣列關鍵是求出high,所以求sa的時候順便把rank和high求出來}
//當需要反覆詢問兩個字尾的最長公共字首時用到rmq
intlog[m];
int best[20
][m];
void initrmq(int n)
}}int lcp(int a,int b)
intmain()
//*******************************************
//n為陣列長度,下標0開始
//將初始資料,儲存在init裡,並且保證每個數字都比0大
//m = max + 1
//一般情況下大多是字元操作,所以128足夠了
//*******************************************
init[n] = 0
; suffix(n+1
,m);
initrmq(n);
}
字尾自動機
#include#include#include
#include
using
namespace
std;
#define n 2010
#define maxq 10010
//字尾自動機節點編號從1開始,ant為節點總數
//0號節點留作空餘
struct
suffix_automaton
void ins(int
x)
}};
Vue 關於字元模板與非字串模板
關於vue字串模板,和非字串模板 看文件時出現字串模板和非字串模板,於是查了查 html 特性是不區分大小寫的。所以,當使用的不是字串模板時,camelcase 駝峰式命名 的 prop 需要轉換為相對應的 kebab case 短橫線分隔式命名 vue.component child 字串模板 指...
多行字串 模板字串
多行字串 下面是普通字串的寫法 普通字串 var l abcd console.log l 編譯結果 如何讓讓乙個字串獨佔多行呢?就需要用到es6 裡的多行字串 多行字串 var i ab cd console.log i 編譯結果 再說說拼接字串,一般情況我們是如何拼接字串的呢?看下面 正常拼接字...
模板 字串 字串匹配
計算next陣列的方法是對於長度為n的匹配串,從0到n 1位依次求出字首字尾最大匹配長度。下面的寫法是僅僅檢測有沒有匹配然後返回第乙個匹配位置,而不是返回所有匹配位置。include include include using namespace std const int n 100 char s...