扩展欧几里得模板(是解二元线性方程的一般解法)
int exgcd(int a,int b,int &x,int &y)
{
if(!b)
{
x=1;
y=0;
return a;
}
int temp=exgcd(b,a%b,x,y)
int t=x;
x=y;
y=t-a/b*y;
return temp;
}
kmp模板
用来解决字符串的模式匹配问题,也可以解决公共最长前后缀的问题。
其中的重中之重是求next数组 ,具体的kmp操作到不是那么难理解,所以这里只给出getnext()函数的写法。
void getnext(string s)
{
int i=0,j=-1;
while(i<s.length())
{
if(j==-1||s[i]==s[j])
next[++i]=++j;
else
j=next[j];
}
}