首页 > 编程语言 >算法模板

算法模板

时间:2023-08-25 16:11:06浏览次数:43  
标签:nxt return int long ++ 算法 ans 模板

快速幂

int power(int a,int b,int p){
	int ans=1%p;
	for(;b;b>>=1){
		if(b&1)ans=(long long)ans*a%p;
		a=(long long)a*a%p;
	}
	return ans;
}

快速乘

long long mul(long long a,long long b,long long p){
    long long ans=0;
    for(;b;b>>=1){
        if(b&1)ans=(ans+a)%p;
        a=a*2%p;
    }
    return ans;
}

ST表

void ST_prework(){
	for(int i=1;i<=n;i++)f[i][0]=a[i];
	int t=log(n)/log(2)+1;
	for(int j=1;j<t;j++)
		for(int i=1;i<=n-(1<<j)+1;i++)
			f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
}
int ST_query(int l,int r){
	int k=log(r-l+1)/log(2);
	return max(f[l][k],f[r-(1<<k)+1][k]);
}

KMP

nxt[1]=0;
for(int i=2,j=0;i<=n;i++){
	while(j>0&&a[i]!=a[j+1])j=nxt[j];
	if(a[i]==a[j+1])j++;
	nxt[i]=j;
}
for(int i=1,j=0;i<=m;i++){
	while(j>0&&(j==n||b[i]!=a[i+1]))j=nxt[j];
	if(b[i]==a[j+1])j++;
	f[i]=j;
}

最小表示法

int n=strlen(s+1);
for(int i=1;i<=n;i++)s[n+i]=s[i];
int i=1,j=2,k;
while(i<=n&&j<=n){
	for(k=0;k<n&&s[i+k]==s[j+k];k++);
	if(k==n)break;
	if(s[i+k]>s[j+k]){
		i=i+k+1;
		if(i==j)i++;
	}else{
		j=j+k+1;
		if(i==j)j++;
	}
}
ans=min(i,j);

Trie

int trie[SIZE][26],tot=1;
void insert(char *str){
	int len=strlen(str),p=1;
	for(int k=0;k<len;k++){
		int ch=str[k]-'a';
		if(trie[p][ch]==0)trie[p][ch]=++tot;
		p=trie[p][ch];
	}
	end[p]=true;
}
bool search(char* str){
	int len=strlen(str),p=1;
	for(int k=0;k<len;k++){
		p=trie[p][str[k]-'a'];
		if(p==0)return false;
	}
	return end[p];
}

标签:nxt,return,int,long,++,算法,ans,模板
From: https://www.cnblogs.com/playtime00/p/17656857.html

相关文章

  • Lnton羚通算法算力云平台在OpenCV-Python中如何图像修复 Image Inpainting
    OpenCVPython图像修复【理论】大多数人家里都会有一些旧照片,上面有一些黑点,一些笔画等。你想过把它修复回来吗?我们不能简单地在油漆工具中删除它们,因为它只会用白色结构取代黑色结构,这是没有用的。在这些情况下,使用一种称为图像修补的技术。基本的想法很简单:用邻近的像素替换......
  • [代码随想录]Day27-贪心算法part01
    题目:455.分发饼干思路:贪心,思路是尽量先给胃口值小的分,饼干也是从小的开始分:如果饼干满足了胃口值,结果+1换下一个人,下一个饼干如果饼干满足不了胃口值,换下一个饼干(满足不了胃口值小的一定满足不了大的)代码:funcfindContentChildren(g[]int,s[]int)int{res:=......
  • 【算法记录】Java - Base64编码解码源码
    Base64编码表索引对应字符索引对应字符索引对应字符索引对应字符0A17R34i51z1B18S35j5202C19T36k5313D20U37l5424E21V38m5535F22W39n5646G23X40o5757H24Y41p5868I25Z42q5......
  • DBC上传模板增加按钮
    *&---------------------------------------------------------------------**&ReportZ100*&*&---------------------------------------------------------------------**&*&*&------------------------------------------------------......
  • 算法 -- 二分查找
    力扣题目链接给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例2:输入:nums=[-1......
  • Lnton羚通算法算力云平台在OpenCV-Python中如何进行图像去噪
    图像去噪(ImageDenoising)是图像处理中的一个重要任务,旨在从带有噪声的图像中恢复出清晰的图像。噪声通常是由于图像采集、传输或存储过程中引入的不良影响而产生的。以下是一些常见的图像去噪方法:1.均值滤波器:基于邻域像素的平均值来平滑图像,可以有效减少高斯噪声等。2.中值滤波器:......
  • 解析直播美颜SDK功能算法:肤色识别、特征增强与实时渲染
    在这个数字化时代,美颜技术在直播中的应用愈发受到重视,为主播和观众创造更加美好的视觉体验。本文将深入探讨直播美颜SDK 的核心功能算法,包括肤色识别、特征增强与实时渲染,揭示其背后的技术原理与工作机制。一、肤色识别算法肤色识别是直播美颜的基础,它能够自动检测图像中的肤色区......
  • 对称加密与非对称加密及常用算法
    对称加密加密和解密使用相同的密钥,常用的算法有des、aes、idea非对称加密使用一对密钥,公钥和私钥,常用的算法有rsa,dsa(非对称加密原理:私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你......
  • [算法学习笔记] 换根dp
    换根dp一般不会指定根节点,并且根节点的变化会对一些值进行改变。因此我们需要转移根。换根dp一般需要预处理一下一个节点的值,然后对于任意节点开始树上dp转移。所以我们常用两次dfs,第一次dfs预处理,第二次dfs为树上dp。一般比较套路。接下来会给出一个典型例题。典例1:L......
  • modoer模板中执行sql语句
     模板中执行sql语句直接查询数据库<!--SELECTsid,aid,name,subname,avgsort,thumb,descriptionFROMmodoer_subjectWHEREfiner>0ANDstatus=1ORDERBYfinerDESCLIMIT0,10-->{get:modoerval=table(table/dbpre_......