首页 > 其他分享 >对博客美化的尝试

对博客美化的尝试

时间:2023-08-13 11:45:30浏览次数:40  
标签:尝试 ch idx int 博客 low now yt 美化

随手粘一个以前oi时期的博文看看效果

今天考试T1考这个,以前只在床上看书时推过一遍,现在忘完了。 复习(重学)一下。

学习博客:

CSDN

OIWIKI

DFS 树

树枝边:DFS时经过的边,即DFS搜索树上的边。

前向边:与DFS方向一致,从某个结点指向其某个子孙的边。

后向边:与DFS方向相反,从某个结点指向其某个祖先的边。(返祖边)

横叉边:从某个结点指向搜索树中的另一子树中的某结点的边。

强联通分量

直接写过程,证明抽象式理解即可(busi)。

DFS的时候:

  1. \(v\) 未被访问,常规操作加更新 \(low\) ,同时入栈。

  2. \(v\) 被访问过了,用它来回溯更新 \(low\) 。

回溯的时候:

如果 \(dfn[x]==low[x]\) ,就弹出它及以上的为一个 \(SCC\)

抽象式证明:

当它能回到以前的时候,因为 \(low\) 被更新了,所以不会出栈。如果是单个 \(SCC\) 的话,那么就先出栈了,就无需考虑了。

例题(以前做过的就不写了):

P1407 稳定婚姻

唯一要关注的是建图的关系 (可怕),写在代码里了。

#include<bits/stdc++.h>

using namespace std;

const int MX=4*10000+10;
#define LL long long
#define inf 0x3f3f3f3f

inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
	while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
	return x*f;
}

int n,m;

unordered_map<string,int> mp;
int mp_idx=0;

inline int _hash(string s)
{
	if(!mp[s])
	{
		mp[s]=++mp_idx;
		return mp_idx;
	}
	else return mp[s];
}

struct tEdge
{
	int to;
	int next;
}edge[MX<<2];
int head[MX],cnt=0;

inline void add(int from,int to)
{
	edge[++cnt].to=to,edge[cnt].next=head[from];
	head[from]=cnt;
}

int dfn[MX],low[MX];
int idx=0;

int scc[MX],scc_idx=0;

bool in_stack[MX];
std::vector<int> stk;

inline void dfs(int now)
{
	//printf("now: %d\n",now);
	dfn[now]=low[now]=++idx;
	in_stack[now]=1;
	stk.push_back(now);
	for(int i=head[now];i;i=edge[i].next)
	{
		int yt=edge[i].to;
		if(!dfn[yt])
		{
			dfs(yt);
			low[now]=min(low[now],low[yt]);
		}
		else if(in_stack[yt])//只有还在栈的(没有处理的)才更新,不然没用
		{
			low[now]=min(low[now],dfn[yt]);
		}
	}
	if(dfn[now]==low[now])
	{
		scc_idx++;
		int y;
		do
		{
			y=stk.back();
			scc[y]=scc_idx;
			in_stack[y]=0;
			stk.pop_back();
		}while(y!=now);
	}
}

string fq[MX][2];

int main(int argc, char const *argv[])
{
	n=read();
	for(int i=1;i<=n;i++)
	{
		cin>>fq[i][0]>>fq[i][1];
		int x1=_hash(fq[i][0]),x2=_hash(fq[i][1]);
		add(x2,x1);
	}
	m=read();
	for(int i=1;i<=m;i++)
	{
		string s1,s2;
		cin>>s1>>s2;
		int x1=_hash(s1),x2=_hash(s2);
		add(x1,x2);
	}
	for(int i=1;i<=n*2;i++)
	{
		if(!dfn[i]) dfs(i);
	}
	//printf("%d\n",scc_idx);
	for(int i=1;i<=n;i++)//女的抛了个男的,男的找个新的女的,新的女的抛了她的男的,那个男的找了一开始那个女的......\jk
	{
		int x1=_hash(fq[i][0]),x2=_hash(fq[i][1]);
		if(scc[x1]==scc[x2])
		{
			printf("Unsafe\n");
		}
		else
		{
			printf("Safe\n");
		}
	}
	return 0;
}

P2194 HXY烧情侣

直接跑 \(tarjan\) 即可,存下每个 \(scc\) 的元素,排序+乘法原理。

#include<bits/stdc++.h>

using namespace std;

const int N=1*100000+233;
const int M=3*100000+233;

#define LL long long
#define inf 0x3f3f3f3f

inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
	while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
	return x*f;
}

int n,m;
int w[N];

struct tEdge
{
	int to,next;	
}edge[M];
int head[N],cnt=0;

inline void add(int from,int to)
{
	edge[++cnt].to=to,edge[cnt].next=head[from];
	head[from]=cnt;
}

int dfn[N],low[N],idx=0;

bool in_stack[N];
std::vector<int> stk;

int scc[N],scc_idx=0;
std::vector<int> bk[N];

inline void tarjan(int now)
{
	dfn[now]=low[now]=++idx;
	stk.push_back(now);
	in_stack[now]=1;
	for(int i=head[now];i;i=edge[i].next)
	{
		int yt=edge[i].to;
		if(!dfn[yt])
		{
			tarjan(yt);
			low[now]=min(low[now],low[yt]);
		}
		else if(in_stack[yt])
		{
			low[now]=min(low[now],dfn[yt]);
		}
	}
	if(dfn[now]==low[now])
	{
		int y;
		++scc_idx;
		do
		{
			y=stk.back();
			stk.pop_back();
			in_stack[y]=0;
			scc[y]=scc_idx;
			bk[scc_idx].push_back(w[y]);
		}
		while(y!=now);
	}
}

int main(int argc, char const *argv[])
{
	n=read();
	for(int i=1;i<=n;i++) w[i]=read();
	m=read();
	for(int i=1;i<=m;i++)
	{
		int u,v;
		u=read(),v=read();
		add(u,v);
	}
	for(int i=1;i<=n;i++)
	{
		if(!dfn[i]) tarjan(i);
	}
	int ans=0;
	LL fn=1ll;
	for(int i=1;i<=scc_idx;i++)
	{
		sort(bk[i].begin(),bk[i].end());
		int minn=bk[i][0],num=0;
		ans+=minn;
		for(std::vector<int>::iterator it=bk[i].begin();it!=bk[i].end();it++)
		{
			if((*it)==minn)
			{
				num++;
			}
			else break;
		}
		fn=fn*(LL)num;
	}
	cout<<ans<<" "<<fn<<endl;
	return 0;
}

强连通分量 END

标签:尝试,ch,idx,int,博客,low,now,yt,美化
From: https://www.cnblogs.com/hewo/p/17626332.html

相关文章

  • 8.7-8.13学习总结博客五:Hive进阶与复杂查询
    博客题目:学习总结五:Hive进阶与复杂查询实践内容概要:学习Hive进阶的使用方法,包括复杂查询、数据转换和性能优化等方面的知识。学习资源:推荐的Hive进阶教程、实践案例和性能优化技巧。实践内容:通过编写复杂的Hive查询语句,探索Hive的高级功能和性能优化方法,并分享实践中的挑战和解决......
  • 2023.8.7-2023.8.14暑假第五周博客
    2023.8.7今天人在外,因此博客休息一天图片如下 2023.8.8今天对hive有了进一步的了解首先要明确一个流程当我打开三台虚拟机,用finalshell连接上后首先要使用如下命令1.su-hadoop切换到hadoop用户,大部分操作都必须在hadoop用户中完成,而千万不要再root中,因为root用户一......
  • CSS基础:学习CSS样式的基本语法和应用,了解如何美化网页。
    CSS(层叠样式表)是一种用于描述网页上元素(例如文字、图像、背景等)外观和布局的样式语言。通过使用CSS,您可以控制和改变网页的外观,使其更具吸引力和易于使用。下面是一些CSS基础知识和常用的语法:选择器:CSS中的选择器用于选择要应用样式的HTML元素。最常见的选择器是元素选择器(例如......
  • 关于博客园星火燎原的一些小建议
    前言 还记得2016年的那个冬天,在工作几年以后,面试时总会被人问及类似【会什么,掌握了什么开发技能,工作中有哪些成绩】的问题,后来几经分析,发现也并没有什么可以拿得出手的东西,而且有些能力也不是自己说,面试官就会采信。加上有些项目是公司资源,涉及到信息安全,保密等因素,并不能拿出......
  • 本地文件上传博客园
    test#include<stdio.h>voidmain(){}changedsanfasdfsadhfjhttps://blog.csdn.net/Leihaifei/article/details/122105929gaskjsalkfjklaakljsdlklkfassfjasfjjfgsdhgsdflkgjksldjgbeifa......
  • 站长公益主机,免费主机➕免费域名➕博客申请➕论坛申请
    站长公益主机在出教程之前准备好久,测试搭建轻量论坛无压力站长公益主机,免费主机➕免费域名➕博客申请➕论坛申请参考地址:fourm.bolgk.eu.org......
  • 博客day01
    Markdown学习标题三级标题四级标题 字体hollo,word!hollo,word!hollo,word!hollo,word! 应用 分割线 图片   超链接点击跳转到狂神博客 列表ABCAB 表格名字性别生日张三男1997.1.1代码1| ......
  • 探索美颜SDK技术:实现精准人脸美化的算法与挑战
    在现代社交媒体和直播平台的兴起中,美颜技术已成为一种不可或缺的元素,让用户能够在镜头前展现出最佳的自己。这种技术的背后有着复杂而精密的算法,由美颜SDK驱动,以实现精准人脸美化。本文将探讨这些算法的核心原理、应用领域以及挑战。一、美颜SDK技术背后的核心原理 美颜SDK技术旨......
  • 博客园美化
    主要参考博客与问题https://www.cnblogs.com/anan-java/p/12196061.htmlhttps://www.cnblogs.com/WhiteTears/p/8824544.html博客园会将上传文件与历史上传文件名进行比对,文件名相同,博客园保留历史版本而不会保留更改,上传的文件是改变了的,但是在设置里面如果链接相同因为历史版......
  • 本地branch: DevTest push 到 远程分支: SmokeTest 失败, 可以尝试 git rebase
    1. 本地branch:DevTestpush到远程分支:SmokeTest gitpushoriginDevTest:SmokeTest失败:![rejected]DevTest->SmokeTest(fetchfirst)error:failedtopushsomerefsto'gitlab.fftech.info:eastern/platform-extensions/sales-channel/store-operation-ins......