【ybt】【图论 强连通 课过 例3】最大半连通子图

【MATLAB例程】三维下的IMM(交互式多模型),模型使用CV(匀速)和CA(匀加速),滤波使用EKF。附完整代码 CV模型:状态包含位置、速度和零加速度(9维状态),状态转移矩阵忽略加速度项CA模型:完整包含位置、速度和加速度(9维状态),状态转移矩阵包含二次项过程噪声矩阵Q分别根据两种模型的运动特性推导。 阅读详情

最大半连通子图

题目链接:最大半连通子图


题目描述

在这里插入图片描述

解题思路

我们可以发现,任何一个半联通子图在缩点后都是一条链,所以我们可以先用 T a r j a n Tarjan Tarjan 缩点,然后用 d f s dfs dfs 找出最大的数量,再跑一边找一共有多少个。

code

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;

long long ans;

int maxn;
int n,m,mod;
int ttt,tm,tt;
int v[100010];
int az[100010];
int dis[100010];
int num[100010];
int dfn[100010];
int low[100010];
int rem[100010];
int dui[100010],top;
int hd[100010],tot;
int hd1[100010],tot1;

struct abc{
	int to,nxt;
}b[1000010],b1[1000010];

struct abcd{
	int x,y;
}t[1000010];

bool cmp(abcd p,abcd q)
{
	if(p.x!=q.x)
		return p.x<q.x;
	return p.y<q.y;
}

void add(int x,int y)
{
	b[++tot]=(abc){y,hd[x]};
	hd[x]=tot;
}

void add1(int x,int y)
{
	b1[++tot1]=(abc){y,hd1[x]};
	hd1[x]=tot1;
}

int dfs(int x)
{
	if(dis[x])
		return dis[x];
	int s=num[x];
	for(int i=hd1[x];i;i=b1[i].nxt)
	{
		int y=b1[i].to;
		dis[y]=dfs(y);
		s=max(s,num[x]+dis[y]);
	}
	return s;
}

int getnum(int x,int f)
{
	if(!f)
		return 1;
	if(rem[x]!=-1)
		return rem[x];
	rem[x]=0;
	for(int i=hd1[x];i;i=b1[i].nxt)
	{
		int y=b1[i].to;
		if(dis[y]+num[x]==dis[x])
			rem[x]=(rem[x]+getnum(y,f-num[y]))%mod;
	}
	return rem[x];
}

void tarjan(int x)
{
	dfn[x]=low[x]=++tm;
	dui[++top]=x;
	az[x]=1;
	for(int i=hd[x];i;i=b[i].nxt)
	{
		int y=b[i].to;
		if(!dfn[y])
		{
			tarjan(y);
			low[x]=min(low[x],low[y]);
		}
		else if(az[y])
			low[x]=min(low[x],dfn[y]);
	}
	if(dfn[x]==low[x])
	{
		v[x]=++tt;
		while(dui[top]!=x)
		{
			v[dui[top]]=tt;
			az[dui[top]]=0;
			num[tt]++;
			top--;
		}
		top--;
		az[x]=0;
		num[tt]++;
	}
}

int main()
{
	cin>>n>>m>>mod;
	for(int i=1;i<=m;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		add(x,y);
	}
	for(int i=1;i<=n;i++)
		if(!dfn[i])
			tarjan(i);
	for(int i=1;i<=n;i++)
		for(int j=hd[i];j;j=b[j].nxt)
		{
			int y=b[j].to;
			if(v[i]!=v[y])
				t[++ttt]=(abcd){v[i],v[y]};
		}
	sort(t+1,t+ttt+1,cmp);
	for(int i=1;i<=ttt;i++)
		if(!(t[i].x==t[i-1].x&&t[i].y==t[i-1].y))
			add1(t[i].x,t[i].y);
	for(int i=1;i<=tt;i++)
		if(!dis[i])
		{
			dis[i]=dfs(i);
			maxn=max(maxn,dis[i]);
		}
	cout<<maxn<<endl;
	memset(rem,-1,sizeof(rem));
	for(int i=1;i<=tt;i++)
		if(dis[i]==maxn)
		{
			rem[i]=getnum(i,maxn-num[i]);
			ans=(ans+(1ll*rem[i]))%mod;
		}
	cout<<ans<<endl;
}
NLTK中WordNet与同义词处理 通过本教程,学习了如何使用NLTK中的WordNet进行自然语言处理任务。首先介绍了WordNet的基本概念及其在NLTK中的集成使用,接着讲解了如何查找同义词、反义词等词汇关系,并结合实际应用演示了语义相似性计算。这些技能在文本分析、情感分析、信息检索等场景中有广泛应用,可以帮助开发者构建更智能的自然语言处理系统。掌握这些基本操作后,可以进一步探索WordNet的其他高级功能,结合其他NLTK工具进行更复杂的语言分析。 阅读详情

相关推荐

华为海思IC笔试通关秘籍:物理/电路/工艺三大方向高频考点解析(附真题)

本文深度解析华为海思IC笔试中物理设计、电路设计和工艺制造三大方向的高频考点与备考策略。针对华为海思IC笔试机考的特点,提供了方向选择建议、核心知识梳理及真题实战技巧,帮助考生构建系统性复习框架,高效备战,提升通关成功率。

mars5的博客 1312

P2272&&ybtoj【图论】4章3题【最大半连通子图】

最大半连通子图 题目 P2272 解析 看一下定义,发现强连通分量一定是半连通子图,直接tarjan缩点建DAG 然后想一下,发现剩下的在DAG上都是单链结构,于是拓扑DP统计即可 发现建重边会影响答案,去重即可 code: #include<queue> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; inline int max(int x,int y

zhanglili1597895的博客 137

Android 12高通thermal-engine调试实战:如何快速开启debug日志并解决CPU降频问题

本文详细介绍了Android 12高通thermal-engine的调试实战,包括如何快速开启debug日志、解读关键日志信息以及解决CPU降频问题。通过优化配置文件和调整温控策略,开发者可以有效提升设备性能,避免因温度管理导致的性能瓶颈。

i3j4k5的博客 307

YBTOJ C. 【例题3】最大半连通子图

在一个有向无环图中的“半联通”就是一条链(因为一条链中的任意两个点都满足定义。毕竟强连通分量一定是半联通的,那么第一问而言就是找一天最大链。这样就生成了一个有向无环图~,而第二问就是找最大连的条数。注意:重新建边的时候需要去重。

DL24yanjun的博客 213

使用Jacob实现将Word文件转换为Pdf文件

如果是首次使用 jacob,建议先直接从 github上下载 zip包,因为在实现Word转Pdf的时候,不仅需要用到 jacob.jar,还需要 jacob.dll 库,而zip包中都有。官方使用文档可以参考:https://github.com/freemansoft/jacob-project/blob/main/docs/UsingJacob.md。// 如果安装的是微软的 Office,需要使用 Word.Application。

qq_41672950的博客 750

OpenStack 8 节点生产级高可用(HA)集群实施文档

本文详细介绍了生产级高可用OpenStack集群的架构设计与实施方案。通过采用3节点控制集群(HAProxy+Keepalived)、2节点计算资源池和3节点Ceph分布式存储,实现了控制平面、计算资源和存储系统三个层面的高可用。方案重点阐述了VIP漂移、MariaDB Galera集群、RabbitMQ镜像队列等关键组件的配置方法,并提供了完整的部署流程和故障验证方案。该架构确保任意单节点故障不会影响平台整体可用性,满足生产环境对稳定性、扩展性和可维护性的要求,为构建无单点故障的OpenStack生产环境

彭大帅的博客 781

BZOJ 1093 最大半连通子图 题解

1093: [ZJOI2007]最大半连通子图 Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 2767  Solved: 1095[Submit][Status][Discuss] Description   一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两

SBS的博客 691

【异常】安装hermes-agent提示Git克隆仓库网络中断 fetch-pack: unexpected disconnect while reading sideband packet

本文分析了Git克隆仓库时出现网络中断错误的常见原因及解决方案。报错表现为连接被远程主机关闭、管道破裂或数据包意外终止,通常由网络不稳定、仓库过大或配置不当引起。提供了5种优先级排序的解决方法:1)使用浅克隆减少数据量;2)优化Git配置参数;3)切换网络或配置代理;4)检查SSH密钥设置;5)改用HTTPS方式克隆。特别推荐先尝试「浅克隆+HTTPS」组合方案快速验证,若问题持续再根据具体报错深入排查。文中包含详细的命令示例和配置说明,适合不同网络环境下的Git用户参考。

奶爸的编程之路,也就一周冷个三天 1420

最大半连通子图【ybt高效进阶3-4-3】【luogu P2272】

最大半连通子图【ybt高效进阶3-4-3】【luogu P2272】 题目大意: 给你一张图,让你求它的最大半连通子图的个数和大小,个数对一个给出的数取模。 一个子图是半连通子图,就是这个子图的任意两个点之间都有路径从一个点到另一个点。(只要能从任意一边到另一边即可,注意与强连通区分) 思路: 首先建图,然后Tarjan缩点,缩完点后图就变成了一个DAG(有向无环图?),强连通分量必然也是一个半连通子图。 这时我们发现,一条链也是一个合法的答案,所以缩点之后,因为没有环了,合法的答案必定是一条链(自己好好理

天空之心 288

【自动驾驶轨迹规划之hybrid A*算法】

本文参考论文:https://ai.stanford.edu/~ddolgov/papers/dolgov_gpp_stair08.pdf 这篇文章是基于经典A*算法与reeds-shepp曲线的,不清楚的读者请参考【自动驾驶轨迹规划5之A*算法】_无意2121的博客-优快云博客【自动驾驶轨迹规划之dubins曲线与reeds-shepp曲线】_无意2121的博客-优快云博客 目录 1 hybrid A* 算法创新点 1.1 搜索方式 1.2 车辆运动学模型 1.3 reeds-shepp曲

weixin_65089713的博客 1万+

【sealos安装指南】基于 Sealos 安装 Kubernetes 1.33.6 高可用集群

本文介绍使用Sealos工具快速搭建Kubernetes集群的详细指南。Sealos简化了K8s部署流程,自动完成系统调优,适合新手学习使用。文章提供了服务器规划、环境准备、在线/离线两种安装方式的具体步骤,包括主机名设置、swap关闭、数据目录配置等。重点讲解了Sealos的安装命令参数说明,以及添加/删除节点等常用操作。推荐使用Calico网络组件确保稳定性,并附有安装成功后的验证截图。该指南能帮助用户快速搭建一个包含master和worker节点的K8s集群,底层基于containerd运行。

欢迎你们到来,希望能帮到大家 463

【ybt高效进阶3-4-3】【ybt金牌导航3-5-2】【luogu P2272】最大半连通子图

我们称一个子图是半连通子图,就是这个子图的任意两个点之间都有路径从一个点到另一个点。(只要能从任意一边到另一边即可) 问你一个图的最大半连通子图是多大,这样的图有多少个,个数对一个给出的数取模。

欢迎您的光顾awa 286

链接文件及功能安全:Hightec如何将Flash驱动放进RAM

Fls本身是无法操作自身的,犯冲突。Fls_WriteCmdCycles (预留300字节)与 Fls_EraseCmdCycles(预留200字节) 函数在执行之前将会Copy进RAM,Fls本身是不能操作Fls本身的,除非把最底层的驱动函数防止在RAM或者其他的Flash里面,假设Flash放置在PF0可以操作PF1。英飞凌的驱动有个规定写指令预留300字节,擦除指令预留200字节。

梦想技术家 2145

YBT高效进阶3.4.3 洛谷P2272最大半连通子图

YBT高效进阶3.4.3 洛谷P2272最大半连通子图 Title 思路 Tanjan缩点,拓扑DP 第一问 f[v]=f[u]+s[v],s[v]为缩点后每个点原来点的个数 第二问 (f[u]+s[v]>f[v]) g[v]=g[u]; (f[u]+s[v]==f[v]) g[v]=(g[v]+g[u])%mods; CODE #include<iostream> #include<cstdio> #include<stack> #include<queue

weixin_46975572的博客 164

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【ybt2021.11.12】T2 字典之序

T2 字典之序 link 解题思路 考虑贪心。 在选每个字母的时候要保证它的后面有所有没有出现过的字母。 每次从后往前找到直到每个未出现过字母都存在,记录下标。 在上一次操作的下标后一位到找到的下标之间取最小的字母。 可以保证这样找到的字符串字典序最小。 code #include<iostream> #include<cstring> #include<cstdio> #include<string> using namespace std; stri

你...你不要过来啊!!! 780

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【ybt】【树形DP】【例题2】结点覆盖

结点覆盖 LinkLinkLink 解题思路 这是一道树形DP。 设 fi,0f_{i,0}fi,0​ 表示以 iii 为根的子树全部被覆盖,iii 的父亲被选的最小值。 fi,1f_{i,1}fi,1​ 表示 iii 被选的最小值。 fi,2f_{i,2}fi,2​ 表示 iii 的儿子被选在最小值。 code #include<iostream> #include<cstdio> using namespace std; int n; int a[2010]; int f[

你...你不要过来啊!!! 543

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【ybt】【数据结构 RMQ 课过 例3】与众不同

与众不同 题目链接:YbtOJ 解题思路 设 lastilast_ilasti​ 表示 iii 上一次出现的位置。 设 preipre_iprei​ 表示以 iii 结尾的最长完美序列的启示位置,显然 prei=max⁡(prei−1,lastai)pre_i=\max(pre_{i-1},last_{a_i})prei​=max(prei−1​,lastai​​) 。 我们先处理出 lastlastlast 和 preprepre ,然后二分出一个 lenlenlen,lenlenlen 的左边可以直

你...你不要过来啊!!! 517

【冲刺 NOIP2022 模拟赛 B 组 Day5】B. 选择人员

【冲刺 NOIP2022 模拟赛 B 组 Day5】B. 选择人员

你...你不要过来啊!!! 461

【ybt】【状压DP】【例题4】炮兵阵地

炮兵阵地 LinkLinkLink 解题思路 设 fi,j,kf_{i,j,k}fi,j,k​ 表示第 iii 行,第 iii 行状态为 jjj ,第 i−1i-1i−1 行状态为 kkk 的情况最大值。 枚举 lll 表示第 n−2n-2n−2 行的状态,在这 333 行状态都不重叠的前提下,状态转移方程如下: fi,j,k=max⁡(fi,k,l)f_{i,j,k}=\max(f_{i,k,l})fi,j,k​=max(fi,k,l​) code #include<iostream> #

你...你不要过来啊!!! 443

【ybt】【状压DP】【例题1】种植方案

种植方案 LinkLinkLink 解题思路 状压 DPDPDP 模板题。 code #include<iostream> #include<cstdio> using namespace std; const int mod=1e8; int n,m; int a[20]; int q[1<<12],tot; int f[20][1<<12]; int main() { cin>>n>>m; for(int i=1;i&

你...你不要过来啊!!! 396

【冲刺 NOIP2022 模拟赛 B 组 Day5】A. 数字计数

【冲刺 NOIP2022 模拟赛 B 组 Day5】A. 数字计数

你...你不要过来啊!!! 371

【ybt】【数据结构 树状数组 课过 例3】严格上升子序列数

严格上升子序列数 题目链接:YbtOJ 解题思路 我们设 fi,jf_{i,j}fi,j​ 表示以 iii 结尾,长度为 jjj 的序列数。 如果直接暴力做,那是 O(n3)O(n^3)O(n3) 的时间复杂度。 我们可以离散化,然后用树状数组维护每一种方案数的情况。 其实和逆序对挺像的说(无端感受) code #include<algorithm> #include<iostream> #include<cstring> #include<cstdio>

你...你不要过来啊!!! 352

【ybt】【基算 深搜 课过 例3】虫食算

虫食算 题目链接:虫食算 感谢 @lzh@lzh@lzh 大佬的帮助 题目描述 解题思路 很明显这是一道深搜题 (不然它怎么会归到深搜专栏里呢) 。 可以搜索枚举每一个字母来寻找最佳答案。 但这样是 O(10n)O(10^n)O(10n) 的时间复杂度,肯定是过不了的,所以要加入剪枝。 如果当前情况已经不合法了,自然不能搜下去。 那么现在关键在于 check()check()check() 函数。 如果当前位三个数都被搜到过了,那么直接判断即可。但如果上一位有数未知,那么最多还可以对这一位贡献 111

你...你不要过来啊!!! 327

【ybt】【图论 强连通 课过 例1】有向图缩点

有向图缩点 题目链接:有向图缩点 题目描述 解题思路 强连通分量模板,用 TarjanTarjanTarjan 算法。 code #include<iostream> #include<cstdio> #include<queue> using namespace std; queue<int> q; int n,m; int ans; int tm,tt; int a[10010]; int v[10010]; int f[10010]; int d

你...你不要过来啊!!! 315

【ybt2021.11.12】T1 他的世界

T1 他的世界 link 解题思路 “暴力也能过” code #include<iostream> #include<cstdio> using namespace std; int T; int n,m; int main() { freopen("number.in","r",stdin); freopen("number.out","w",stdout); cin>>T; while(T--) { scanf("%d%d",&n,&

你...你不要过来啊!!! 314

【ybt】【数据结构 RMQ 课过 例4】矩阵最值

矩阵最值 题目链接:YbtOJ 解题思路 二维st表模板题。 code #pragma GCC optimize(2) #include<iostream> #include<cstdio> #include<cmath> #define int long long using namespace std; int n,m,T; int a[260][260]; int f[260][260][21][21]; signed main() { cin>&

你...你不要过来啊!!! 299
上一篇: 【ybt】【图论 强连通 课过 例2】受欢迎的牛
下一篇: 【ybt】【图论 强连通 课过 例4】恒星的亮度
SSL_GYX
博客等级 码龄7年 103粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值