首页 > 其他分享 >代码模板

代码模板

时间:2023-08-28 20:44:57浏览次数:34  
标签:prime return int 代码 fa low void 模板

今天有空来专门总结一下代码模版,顺便定制一张代码模版鼠标垫,哦吼!!!

acwing算法鼠标垫

↑这就是预期效果啦!!!

下面开始总结算法模版:

素数筛(线性筛)

时间复杂度 \(O(N)\)

void primes(int n){//线性筛区间[1,n]的素数 
	memset(isprime,true,sizeof(isprime));  //全部标记为素数 
    isprime[1]=false;m=0;
	for(int i=2;i<=n;i++){
		if(isprime[i]) prime[++m]=i;
		for(int j=1;j<=m;j++){
			if(prime[j]>n/i) break;//i*prime[j]超出n的范围 
			isprime[i*prime[j]]=false;
		    if(i%prime[j]==0) break;//保证prime[j]是i的最小质因子 
		}
	}
}

Tarjan求强联通分量

void tarjan(int u){
	dfn[u]=low[u]=++tim;
	s.push(u);
	vis[u]=1;
	for(int e=fir[u];e;e=nex[e]){
		int v=to[e];
		if(!dfn[v]){
			tarjan(v);
			low[u]=min(low[u],low[v]);
		}
		else if(vis[v]) low[u]=min(low[u],dfn[v]);
	}
	if(low[u]==dfn[u]){
		cnt++;
		int v;
		do{
            v=s.top();s.pop();
			vis[v]=0;
			fl[v]=cnt;sl[cnt]++;
		}while(v!=u)
	}
}

LCA倍增

void Init(int u,int father){
	dep[u]=dep[father]+1;
	for(int i=0;i<=16;i++)
		f[u][i+1]=f[f[u][i]][i];
	for(int e=first[u];e;e=Next[e]){
		int v=to[e];
		if(v==father) continue; 
		f[v][0]=u;   //v的父亲是u 
		Init(v,u); 
	}
}
int Lca(int x,int y){
	if(dep[x]<dep[y]) swap(x,y);//保证x深度更大 
	for(int i=17;i>=0;i--){
		if(dep[f[x][i]]>=dep[y]) x=f[x][i];
		if(x==y) return x;  
	}
	for(int i=17;i>=0;i--){
		if(f[x][i]!=f[y][i]){ 
			x=f[x][i];
			y=f[y][i];
		}
	}
	return f[x][0];//最后跳到了lca的下面一个 
}

树状数组

动态维护前缀和,支持单点,区间更新和查询

int lowbit(int i){
	return i & (-i);
}
void update(int j,int i){
	while(i<=n){
		tree[i]+=j;
		i+=lowbit(i);
	}
}
int query(int i){
	int sum=0;
	while(i>0){
		sum+=tree[i];
		i-=lowbit(i);
	}	
	return sum;
}

欧几里得(GCD)

int gcd(int a,int b){ //欧几里得(辗转相除) 
	if(b==0) return a;
	else return gcd(b,a%b);
}

快速幂

int fastpower(int a,int b){
	int ans=1;
	while(b>0){
		if(b&1) ans=(ans*a)%mod;
		b=b>>1;
		a=(a*a)%mod;
	}	
	return ans;
}

并查集

int getfather(int x){
	if(fa[x]==x) return x;
	fa[x]=getfather(fa[x]);
	return fa[x];
}
void merge(int x,int y){
	int fx=getfather(x);
	int fy=getfather(y);
	fa[fx]=fy;
}

KMP

void getNext() //计算Next数组
{
	int j=1,k=0;
	Next[1]=0;
	while(j<lent){
		if(k==0||t[j]==t[k])
			Next[++j]=++k;
		else k=Next[k];
	}
}

标签:prime,return,int,代码,fa,low,void,模板
From: https://www.cnblogs.com/alloverzyt/p/17663340.html

相关文章

  • Galaxy Studio星河工作室于8月26日正式使用Canva可画网页版对室徽进行重绘!还开放了名
    GalaxyStudio星河工作室于8月26日正式使用Canva可画网页版对室徽进行重绘!还开放了名片模板?据了解,GalaxyStudio星河工作室室长于8月26日对使用Canva可画网页版室徽正式重绘!新室徽到底怎么样呢?让大家都来看看吧!怎么样?不错吧!对了!还有一个名片模板,想要使用的成员可以找QQ2789617......
  • 我开发了一个代码生成工具,功能强大,宣传一下
    提升开发效率:CodeGenerator(代码生成工具)目前我自己每天用,开放免费给大家试用(使用)。 是时候提高编码效率、节省时间和降低开发成本了!现在,我们自豪地推出CodeGenerator(代码生成工具),一个能满足您各种开发需求的应用程序。立即点击链接 https://lbai.iclabs.cn/app......
  • 如何将低代码平台的用户输入作为 API 输入参数
    要将低代码平台上的用户输入作为API输入参数,你需要确保你的平台能够处理API调用,并且可以获取和处理用户的输入。以下是一种可能的步骤:用户输入:首先,你需要在你的低代码平台上创建一个用户输入表单,用户可以在这里输入他们的数据。捕获输入:在用户提交表单后,你的平台需要有能力......
  • 在低代码平台执行 API 请求并将结果显示在页面上
    低代码开发平台(Low-CodeDevelopmentPlatform)是一种用于构建应用程序的软件开发环境,它允许开发者通过图形化的方式,而非传统的手动编码方式来创建应用程序。这种方式大大减少了开发应用程序所需的代码量,因此称为低代码。低代码平台的核心是其拖放式的用户界面,这允许开发者通过直......
  • ThinkPHP 2.x任意代码执行漏洞
    ThinkPHP2.x任意代码执行漏洞原因:ThinkPHP2.x版本中,使用preg_replace的/e模式匹配路由:$res=preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e','$var[\'\\1\']="\\2";',implode($depr,$paths));导致用户的输入参数被插入双引号......
  • prettier代码格式化简易使用
    项目中一般都配置有eslint,eslint负责是负责校验代码的插件,prettier负责格式化代码。prettier下载installi-Dprettiereslint-config-prettiereslint-plugin-prettier在项目根目录的eslint配置文件eslintrc.js中增加配置:extends:[...'plugin:prettier/recommended......
  • 与信创国产化高度适配的低代码开发框架
    信创产业是中国经济发展的基础,也是重要驱动力。坚持基础软件自主创新,是国产软件正版化应用和推广的源头。行业预测,2023年信创产业市场规模预计为18710.59亿元,预计到2025年将会接近3.5万亿元。信创产业的主要目标是实现信息技术领域的自主可控,保障国家信息安全,而其核心手段在于通......
  • [代码随想录]Day29-贪心算法part03
    题目:1005.K次取反后最大化的数组和思路:思路是:先把负数从小到大变成正数(即绝对值由大到小)如果还需要变化(k>0),就变化最小的数在第一步变化的同时顺便记录一个数组和,那么结束之后会有三种情况:k==0;也就是说负数的个数大于等于k,直接返回结果k%2==0;此时全是正整数,......
  • strstr函数及其代码模拟实现
    一.用法定义:char*strstr(constchar*str1,constchar*str2);•判断str1中是否包含子串str2•若包含,则返回在str1中子串str2首字符的地址•若不包含,则返回空指针NULL例:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<string.h>intmain(){ chararr1[]=......
  • Qt开发思想探幽]QObject、模板继承和多继承
    @目录[Qt开发探幽]QObject、模板继承和多继承1.QObject为什么不允许模板继承:2.如果需要使用QObject进行多继承的话,子对象引用的父类链至多只能含有一个QObject3.如果使用模板类和QObject做多继承,编译不通过问题场景[Qt开发探幽]QObject、模板继承和多继承当我们在用Qt开发一个......