图论

数据结构

数学

其他:

洛谷模板:a,b两个字符串,求b串在a串中出现的位置

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s1[],s2[];
int len1,len2,Next[];
int main(){
scanf("%s%s",s1+,s2+);
len1=strlen(s1+);len2=strlen(s2+);
for(int i=,k=;i<=len2;i++){
for(;s2[i]!=s2[k+]&&k>;k=Next[k]);
if(s2[i]==s2[k+])Next[i]=++k;
}
for(int i=,k=;i<=len1;i++){
for(;s1[i]!=s2[k+]&&k>;k=Next[k]);
if(s1[i]==s2[k+])++k;
if(k==len2)printf("%d\n",i-len2+),k=Next[k];
}
for(int i=;i<=len2;i++)printf("%d ",Next[i]);
return ;
}

KMP

洛谷模板:n个字符串求有几个不同的串

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<set>
#include<cstring>
using namespace std;
//#define mod 1e9+7//不能这样宏定义
const int mod=1e9+;
#define D 131
#define M 2333+7
long long n,g[M],f[M];
string s;
set<long long>t;
void predeal(int x){
f[]=s[];
for(int i=;i<=x;i++)
f[i]=(1LL*f[i-]*D+s[i-])%mod;
g[]=;
for(int i=;i<=x;i++)
g[i]=1ll*g[i-]*D%mod;
}
int Hash(int l,int r){
long long a=f[r],b=1LL*f[l-]*g[r-l+]%mod;
return (a-b+mod)%mod;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++){
cin>>s;
long long len=s.length();
predeal(len);
long long k=Hash(,len);
t.insert(k);
}
printf("%lld\n",t.size());
return ;
}

hash

洛谷模板:最长回文串

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=1e7+;
char s[maxn*],str[maxn*];
int Len[maxn*],len; void getstr()
{
int k=;
str[k++]='$';
for(int i=;i<len;i++)
str[k++]='#',
str[k++]=s[i];
str[k++]='#';
len=k;
}
void Manacher()
{
getstr();
int mx=,id;
for(int i=;i<len;i++)
{
if(mx>i) Len[i]=min(Len[*id-i],mx-i);
else Len[i]=;
while(str[i+Len[i]]==str[i-Len[i]])
Len[i]++;
if(Len[i]+i>mx)
mx=Len[i]+i,id=i;
}
}
int main()
{
scanf("%s",&s);
len=strlen(s);
Manacher();
int ans=;
for(int i=;i<len;i++) ans=max(ans,Len[i]);
printf("%d\n",ans-);
return ;
}

Manacher

洛谷模板:快速排序

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; int n,a[],tmp[]; void merge_sort(int l,int r){
if(l==r)return;
int mid=(l+r)>>;
merge_sort(l,mid);
merge_sort(mid+,r);
int ii=l,jj=mid+,k=l;
while(ii<=mid&&jj<=r){
if(a[ii]<a[jj])tmp[k++]=a[ii++];
else tmp[k++]=a[jj++];
}
while(ii<=mid)tmp[k++]=a[ii++];
while(jj<=r)tmp[k++]=a[jj++];
for(int i=l;i<=r;i++)a[i]=tmp[i];
} int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
merge_sort(,n);
for(int i=;i<=n;i++)cout<<a[i]<<" ";
return ;
}

归并排序

洛谷模板:Lucas定理

给定n,m,p(1\le n,m,p\le 10^51≤n,m,p≤105)

求C(n+m,m)

#include<iostream>
#include<cstdio>
#include<cstring>
#define LL long long
using namespace std; int T;
LL n,m,p,f[]; void pre(){
f[]=;
for(int i=;i<=p;i++)f[i]=f[i-]*i%p;
} LL ksm(LL x,LL y){
LL ret=%p;
while(y){
if(y&)ret=ret*x%p;
x=x*x%p;
y>>=;
}
return ret;
} LL C(LL n,LL m){
if(m>n)return ;//*******
return f[n]*ksm(f[m],p-)%p*ksm(f[n-m],p-)%p;
} LL Lucas(LL n,LL m){
if(!m)return ;
return C(n%p,m%p)*Lucas(n/p,m/p)%p;
} int main(){
scanf("%d",&T);
while(T--){
scanf("%lld%lld%lld",&n,&m,&p);
pre();
printf("%lld\n",Lucas(n+m,m)%p);
}
return ;
}

Lucas

洛谷模板:ST表

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int f[][];
int n,m,a,b;
int query(int l,int r){
int k=log(r-l+)/log();
return max(f[l][k],f[r-(<<k)+][k]);
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",&f[i][]);
for(int i=;i<=;i++)
for(int j=;j+(<<i)-<=n;j++)
f[j][i]=max(f[j][i-],f[j+(<<(i-))][i-]);
for(int i=;i<=m;i++){
scanf("%d%d",&a,&b);
printf("%d\n",query(a,b));
}
}

ST

洛谷模板:矩阵快速幂

#include<iostream>
#include<cstdio>
#include<cstring>
#define mod 1000000007
using namespace std;
int n;
struct matrix{
long long m[][];
}A;
matrix mul(matrix a,matrix b){
matrix t;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
t.m[i][j]=;
for(int k=;k<=n;k++){
t.m[i][j]=(t.m[i][j]+a.m[i][k]*b.m[k][j])%mod;
}
}
}
return t;
}
matrix fast_mul(matrix a,long long k){
matrix ret=a,now=a;
k--;
while(k){
if(k&)ret=mul(ret,now);
now=mul(now,now);
k>>=;
}
return ret;
}
long long k;
int main(){
scanf("%d%lld",&n,&k);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%d",&A.m[i][j]);
A=fast_mul(A,k);
for(int i=;i<=n;i++){
for(int j=;j<=n;j++)
printf("%lld ",A.m[i][j]);
printf("\n");
}
return ;
}

矩阵快速幂

洛谷模板:乘法逆元

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 3000010
using namespace std;
int n,p;
int inv[MAXN];
int main(){
scanf("%d%d",&n,&p);
inv[]=;
printf("1\n");
for(int i=;i<=n;i++){
inv[i]=(p-p/i)*1ll*inv[p%i]%p;
printf("%d\n",inv[i]);
}
}

乘法逆元 线性

#include<iostream>
#include<cstdio>
#include<cstring>
#define LL long long
using namespace std; int n,p; LL ksm(LL x,LL y){
int ret=;
while(y){
if(y&)ret=1LL*ret%p*x%p;
x=x*x%p;
y>>=;
}
return ret%p;
} int main(){
scanf("%d%d",&n,&p);
for(int i=;i<=n;i++){
printf("%lld\n",ksm(i,p-)%p);
}
return ;
}

费马小定理

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; int n,p; void exgcd(int a,int b,int &x,int &y){
if(b==){
x=;y=;
return;
}
exgcd(b,a%b,x,y);
int t=x;x=y;y=t-a/b*y;
} int main(){
scanf("%d%d",&n,&p);
for(register int i=;i<=n;i++){
int x,y;
exgcd(i,p,x,y);
printf("%d\n",(x+p)%p);
}
return ;
}

扩展欧几里得

后两个在洛谷T一个点

莫队

树链剖分

经典算法:

贪心 

动态规划

希望看到有漏下的重要考点能够提出来

感谢

【模板】NOIP模板汇总的更多相关文章

  1. NOIP模板总结

    NOIP模板总结 进考场先打一份缺省源: # include <cstdio> # include <iostream> # include <cstring> # ...

  2. Freemaker基于word模板动态导出汇总整理

    Freemaker基于word模板动态导出汇总整理 一.使用的jar包: 二.Word模板动态导出的基本思路: 1.首先通过自己在word中创建好需要导出的word文本+表格的模板,模板中需要填写内容 ...

  3. C++:类模板与模板类

    6.3 类模板和模板类 所谓类模板,实际上是建立一个通用类,其数据成员.成员函数的返回值类型和形参类型不具体指定,用一个虚拟的类型来代表.使用类模板定义对象时,系统会实参的类型来取代类模板中虚拟类型从 ...

  4. C++:函数模板与模板函数

    6.1 模板的概念 C++允许用同一个函数定义函数,这些函数的参数个数和参数类型不同.例如求最大值的max函数, int max(int x,int y) {       return (x>y ...

  5. C++ template学习一(函数模板和模板函数)

    函数模板和模板函数(1)函数模板函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计.它的最大特点是把函数使用的数据类型作为参数.函数模板的声明形式为:templat ...

  6. vs 2013下自定义ASP.net MVC 5/Web API 2 模板(T4 视图模板/控制器模板)

    vs 2013下自定义ASP.net MVC 5/Web API 2  模板(T4 视图模板/控制器模板): Customizing ASP.NET MVC 5/Web API 2 Scaffoldi ...

  7. C++ - 模板类模板成员函数(member function template)隐式处理(implicit)变化

    模板类模板成员函数(member function template)隐式处理(implicit)变化 本文地址: http://blog.csdn.net/caroline_wendy/articl ...

  8. .NET/ASP.NETMVC Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(一)

    .NET/ASP.NETMVC Model元数据.HtmlHelper.自定义模板.模板的装饰者模式(一) 阅读目录: 1.开篇介绍 2.Model与View的使用关系(数据上下文DataContex ...

  9. C++类模板和模板类

    C++ 中有一个重要特性,那就是模板类型.类似于Objective-C中的泛型.C++通过类模板来实现泛型支持. 1 基础的类模板 类模板,可以定义相同的操作,拥有不同数据类型的成员属性. 通常使用t ...

  10. Xamarin XAML语言教程控件模板的模板绑定

    Xamarin XAML语言教程控件模板的模板绑定 控件模板的模板绑定 为了可以轻松更改控件模板中控件上的属性值,可以在控件模板中实现模板绑定功能.模板绑定允许控件模板中的控件将数据绑定到公共属性上. ...

随机推荐

  1. Python3.x:pyodbc连接Sybase数据库操作(Windows系统下DNS模式)

    Python3.x:pyodbc连接Sybase数据库操作(Windows系统下DNS模式) 一.安装模块pyodbc pip install pyodbc 二.配置odbc数据源 (1).windo ...

  2. Refseq,accssion #,gi ,Ensembl的关系

    accession编号的分子类型代号: Ensembl是2000年就开始开发的基因组自动注释软件,起初是只对真核生物基因组,2009年后开始对植物,细菌等开放.既然要注释,就要有注释对象(基因,转录本 ...

  3. apache性能测试工具ab

    性能测试工具目前最常见的有以下几种:ab.http_load.webbench.siege ab是apache自带的压力测试工具.ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可 ...

  4. Oracle 事务处理

    事务的四大特性 1.原子性(Atomicity) 事务的原子性是指事务中包含的所有操作要么都做,要么都不做,保证数据库是一致的. 2.一致性(Consistency) 一致性是指数据库在事务操作前和事 ...

  5. [BZOJ1257]余数之和

    Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值 其中k mod i表示k除以i的余数. 例如j(5 ...

  6. 移动端给img元素添加content: "";

    误给img原始添加 content: "";属性后发现在ios系统中图片是不会显示的android系统是正常的

  7. JQuery -- Validate, Jquery 表单校验

    1. Jquery 表单验证需要插件 jQuery validation 1.7  ---验证插件需要:jQuery 1.3.2 或 1.4.2版本 http://jquery.bassistance ...

  8. JavaWeb -- Struts 数据传输:OGNL和类型转换

    1. 数据传输:OGNL和类型转换 OGNL和struts2 OGNL:Object-Graph Navigation Language. OGNL是集成进struts框架中比较强大的技术有助于数据传 ...

  9. Remove Duplicates from Sorted List ,除去链表中相邻的重复元素

    Remove Duplicates from Sorted List : Given a sorted linked list, delete all duplicates such that eac ...

  10. yii2:不使用composer安装yii2-jui的方法

    今天有一个功能需要用到autocomplete,既然用yii2开发,在这里当然使用它自带的yii2-jui中的autocomplete组件了.yii2basic版默认是没有yii2-jui组件的,需要 ...