首页 > 其他分享 >存档

存档

时间:2023-10-20 09:04:15浏览次数:37  
标签:ch int 存档 ++ dfn low typ

点击查看代码
//定义 low 为u 能走到的栈里的最小值
//有向图强连通分量
//区分返祖边
void tar(int u){
    low[u]=++num_tar; dfn[u]=low[u];
	vis[u]=1; st[++top]=u;
	for(int i=0;i<e[u].size();i++){
		int v=e[u][i];
		if(!dfn[v]){
			tar(v); low[u]=min(low[u],low[v]);
		}else if(vis[v]){
			low[u]=min(low[u],dfn[v]);
		}
	}if(dfn[u]==low[u]){
	    c++;
		do{
			col[st[top]]=c;
			vis[st[top]]=0;
			top--;
		}while(st[top]!=u);
	}
}

//无向图
//割点
//定义 low 为u能走到的最小点

void tarjin(int u){
	dfn[u]=low[u]=++cnt;
	int flag=0;
	for(int i=head[u];i;i=s[i].nex){
		int v=s[i].to;
		if(!dfn[v]){
			tarjin(v);
			low[u]=min(low[u],low[v]);
			if(dfn[u]<=low[v]){
				++flag;
				if(u!=root||flag>1) {
					if(cut[u]==0) ans++;
					cut[u]=1;
				}
			}
		}else low[u]=min(low[u],dfn[v]);
	}
}

//无向图 求桥
void tarjin(int u){
	dfn[u]=low[u]=++cnt;
	int flag=0;
	for(int i=head[u];i;i=s[i].nex){
		int v=s[i].to;
		if(!dfn[v]){
			tarjin(v);
			low[u]=min(low[u],low[v]);
			if(dfn[u]<low[v]){
				++flag;
				//u ----v 为桥
			}
		}else low[u]=min(low[u],dfn[v]);
	}
}

//字典树  过
//AC自动机
//多模式串匹配
//fail指针:失配指针,当前位置无法匹配后下一个最优且最长的前缀位置
//每一个节点代表一个前缀状态
//构造trie
int cnt=1;//构造一个1的虚根
char s[N];
void insert(){
	int u=1,len=strlen(s);
	for(int i=0;i<len;i++){
		int v=s[i]-'a';
		if(!son[u][v]) son[u][v]=++cnt;
		u=son[u][v];
	}num[u]++;
}
//getfail
void getfail(){
	queue<int> q;
	for(int i=0;i<26;i++) son[0][i]=1;
	q.push(1); fail[1]=0;
	while(!q.empty()){
		int u=q.front();
		q.pop();
		for(int i=0;i<26;i++){
			int v=son[u][i];
			int Fail=fail[u];
			if(!v){
				son[u][i]=son[Fail][i];//相当于见trie 图
				continue;
			}fail[v]=son[Fail][i];
            q.push(v);
		}
	}
}
//匹配   用到再说
//fail树
//判环



//splay
struct Splay{
	#define ls (ch[tmp][0])
	#define rs (ch[tmp][1])
	int num;
	int f[N],ch[N][2],siz[N],val[N],w[N];
	void pushup(int tmp){siz[tmp]=siz[ls]+siz[rs]+w[k];}
	int rela(int k){return ch[f[k]][0]==k?0:1;}
	void c(int x,int fa,int rc){ch[fa][rc]=x; f[x]=fa;}
	void rot(int x){//把x旋转到f[x]
        int fa=f[x],gr=f[fa];
		int tf=rela(x),tg=rela(fa);
		c(chx[x][tf^1],fa,tf);
		c(fa,x,tf^1);
		c(x,gr,tg);
		pushup(fa); pushup(x);
	}void splay(int x,int aim){
		aim=f[aim];
		while(f[x]!=aim){
			if(f[f[x]]!=aim){
				if(rela(x)==rela(f[x])) rot(f[x]);
				else rot(x);
			}rot(x);
		}
	}void add(int aim){
		int x=rt;
		if(!x){
			x=newpoint(aim,0);
			rt=x;
			return;
		}while(1){
			if(val[x]==aim){
				//aaaaaaaa
				splay(x,rt);
			}int typ=val[x]>aim?0:1;
			if(!ch[x][typ]){
				ch[x][typ]=nowpoint(aim,x);
				splay(ch[x][typ],rt);
				return;
			}x=ch[x][typ];
		}
	}int find(int x,int aim){
		if(!x) return 0;
		if(val[x]==aim){
			splay(x,rt);
			return x;
		}//递归就行了 find
	}void del(int x){
		int pos=find(rt,x);
		if(!pos) return;
		if(w[pos]>1) {//常规操作}
		else{
			//找到左儿子里面最大的
			//splay to 左儿子的位置
			//把右子树接到左儿子的右儿子上
			//把左儿子和虚根0接上
		}
	}//剩下的都随便吧 摆烂
}


//kmp 算法

void get_p(string s){////
	int len=s.size();
	p[0]=0;
	for(int i=1;i<len;i++){
		int j=p[i-1];
		while(j>0&&s[i]!=s[j]){
			j=p[j-1];
		}
		if(s[i]==s[j]) ++j;
		p[i]=j;
    }
}//文本串匹配一会再说






//CRT  待补……






}

标签:ch,int,存档,++,dfn,low,typ
From: https://www.cnblogs.com/limingyun/p/17776207.html

相关文章

  • GitBooK使用教程存档
    Gitbook使用教程GitBook文档(中文版)Gitbook简单介绍......
  • Wpf Thumb 默认样式存档,方便手头没有 vs 时查阅.
    1<StyleTargetType="{x:TypeThumb}">2<SetterProperty="Stylus.IsPressAndHoldEnabled"Value="false"/>3<SetterProperty="Background"Value="{DynamicResource{x:StaticSystemColors.C......
  • 永劫的孤独,有限的亲情-----FORTUNE ARTERIAL(攻略、存档)
     若是世间有善良的玩笑和邪恶的玩笑的话,那么就把它当作100%是邪恶的笑话吧!新转学的学院里。磷的教室里有个吸血鬼的存在。大致是这样的,从人类的脖子上吸血那不是很优雅的嘛!这是常识?今天她以很想看看的表情这么说的吧。认识她以来,都是以她为本。我追求的生活是要更加......
  • outlook自动存档怎么用?
    品牌型号:AMD5800X台式电脑 系统:windows11正式版 软件版本: Microsoft365outlook的功能有很多,例如收发电子邮件,记录日程安排,管理任务等,今天就和大家分享一下有关于outlook自动存档怎么用,outlook自动存档的邮件怎么查看的具体操作。一、outlook自动存档怎么用相信大家都有碰......
  • Unity资源&&配置存档路径问题
    stringdir=Application.persistentDataPath;//万能路径,打包前打包后移动端都可用,该路径可读、可写,但是只能在程序运行时才能读写操作,不能提前将数据放入这个路径。#ifUNITY_EDITORdir=Application.streamingAssetsPath;//打包前可用#endif#if(UNITY_ANDRO......
  • Unity游戏存档读档的几种方式
    1.二进制privatestaticvoidSaveByBinary(){//创建二进制格式化程序BinaryFormatterbf=newBinaryFormatter();//创建一个文件流FileStreamfs=File.Create(GetFilePath(SaveDataType));//二进制方法序列化对象......
  • "Tarfs"是一个内存文件系统,它使用TAR(Tape Archive)文件格式来实现在内存中创建一个虚拟
    "Tarfs"是一个内存文件系统,它使用TAR(TapeArchive)文件格式来实现在内存中创建一个虚拟的文件系统。TAR文件格式是一种常见的存档文件格式,用于将多个文件和目录组合成单个文件。Tarfs通过将TAR文件加载到内存中,并在内存空间中模拟文件和目录结构,实现了一个简单的文件系统。它允许......
  • 大二上 | 一些四六级护身符的存档
    当时背了好几篇范文,写作文时把这些fancy句子一通缝合,果然可以得高分......
  • FairMOT复现报错存档
    FairMOT复现使用pip命令单独安装Cython包即可修改下载的cython-bbox包里的setup.py里的代码将#extra_compile_args=['-Wno-cpp'],修改为extra_compile_args={'gcc':['/Qstd=c99']},然后运行pythonsetup.pybuild_extinstall安装DCNv2时安装失败,要尝试一下......
  • linux操作命令存档
    《linux下删除文件夹及下面所有文件》rm-rf目录名字#-r就是向下递归,不管有多少级目录,一并删除#-f就是直接强行删除,不作任何提示的意思rmtest.tx......