强连通刷起来

【算法】基于STM32的MPU6050卡尔曼滤波算法(入门级) 1. 简介 卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。详情见:卡尔曼滤波简介 MPU6050的解算主要有三种姿态融合算法:四元数法 、一阶互补算法和卡尔曼滤波算法。我们常用的DMP库使用的是四元数法,本文采用卡尔曼滤波算法,使用RT-Thread国产操作系统,利用env工具进行串口、模拟IIC环境配置,使用10ms的线程进行卡尔曼滤波解算。 2. 阅读详情

tarjan有向图求强连通分量

学前需知:

DFS,前向星,图论知识(强连通,反向边,横边,树边)

重点:

low的定义,tarjan过程模拟几遍

学习链接:

http://blog.miskcoo.com/2016/07/tarjan-algorithm-strongly-connected-components

例题:

poj2553
题意:

有向图n<=5000,找出所有的sink点,sink点是指sink点为起点经过的所有点都可以走回自己

思路:

scc后的DAG中出度为0就能确保这一点,

否则,sccA经过sccB,sccB中的点都无法走回sccA的点,与sink的定义不符

63ms

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn=20005;
const int maxe=50005;
int low[maxn];
int dfn[maxn];
bool ins[maxn];
int sk[maxn];
int poi=0,idx=0,cnt=0;
int num=0;
int head[maxn];
int to[maxe*2];
int nxt[maxe*2];

int in[maxn];//入度
int ou[maxn];//出度
int scc[maxn];
void add(int u,int v)
{
	cnt++;
	nxt[cnt]=head[u];
	head[u]=cnt;
	to[cnt]=v;
}
void tarjan(int u)
{
	dfn[u]=low[u]=++idx;
	ins[u]=1;
	sk[poi++]=u;
	for(int i=head[u]; i!=-1; i=nxt[i])
	{
		int v=to[i];
		if(!dfn[v])
		{
			tarjan(v);
			low[u]=min(low[u],low[v]);
		}
		else if(ins[v]) low[u]=min(low[u],dfn[v]);
	}
	if(low[u]==dfn[u])
	{
		num++;
		int t;
		do
		{
			t=sk[--poi];
			scc[t]=num;
			ins[t]=0;
		}
		while(t!=u);
	}
}

int main()
{
	int n,m;
	while(~scanf("%d",&n))
	{
		if(n==0)break;
		scanf("%d",&m);
		int u,v;
		memset(ins,0,sizeof(ins));
		memset(dfn,0,sizeof(dfn));
		memset(low,0,sizeof(low));
		memset(head,-1,sizeof(head));
		memset(ou,0,sizeof(ou));
		memset(in,0,sizeof(in));
		num=poi=cnt=idx=0;
		for(int i=1; i<=m; i++)
		{
			scanf("%d %d",&u,&v);
			add(u,v);
		}
		for(int i=1; i<=n; i++)
			if(!dfn[i])tarjan(i);
		for(int u=1; u<=n; u++)
		{
			for(int i=head[u]; i!=-1; i=nxt[i])
			{
				int v=to[i];
				if(scc[u]!=scc[v])
				{
					in[scc[v]]++;
					ou[scc[u]]++;
				}
			}
		}
		int ans1=0;	int ans2=0;
		for(int i=1; i<=n; i++)
		{
			if(ou[scc[i]]==0)printf("%d ",i);
		}
		printf("\n");

	}
}

POJ2186
题意:

给有向图N<=10000,M<=50000,问有多少个点使得该点被其他所有点经过若干路径到达

思路:

原图缩点后,仅存在一个出度为0的点

(缩点后每个点都是强连通点集)的点集大小就是答案了

79ms

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h> 
using namespace std;
const int maxn=20005;
const int maxe=50005;
int low[maxn];
int dfn[maxn];
bool ins[maxn];
int sk[maxn];
int poi=0,idx=0,cnt=0;
int num=0;
int head[maxn];
int to[maxe*2];
int nxt[maxe*2];

//int in[maxn];//入度 
int ou[maxn];//出度 
int scc[maxn];
int id[maxn];
void add(int u,int v)
{
	cnt++;nxt[cnt]=head[u];
	head[u]=cnt; to[cnt]=v;
}
void tarjan(int u)
{
	dfn[u]=low[u]=++idx;
	ins[u]=1;
	sk[poi++]=u;
	for(int i=head[u];i!=-1;i=nxt[i])
	{
		int v=to[i];
		if(!dfn[v])
		{
			tarjan(v);
			low[u]=min(low[u],low[v]);
		}
		else if(ins[v]) low[u]=min(low[u],dfn[v]);
	}
	if(low[u]==dfn[u])
	{
		num++;
		int t;
		do{
			t=sk[--poi];
			scc[t]=num;
			ins[t]=0;
			id[num]++;
		}
		while(t!=u);
	}
}

int main()
{
	int n,m;
	while(~scanf("%d %d",&n,&m))
	{
		int u,v;
		memset(ins,0,sizeof(ins));
		memset(dfn,0,sizeof(dfn));
		memset(low,0,sizeof(low));
		memset(head,-1,sizeof(head));
		memset(ou,0,sizeof(ou));
//		memset(in,0,sizeof(in));
		num=poi=cnt=idx=0;
		for(int i=1;i<=m;i++)
		{
			scanf("%d %d",&u,&v);
			add(u,v);
		}
		for(int i=1;i<=n;i++)
		{
			if(!dfn[i])
				tarjan(i);
		}
		int ans=0;
		for(int u=1;u<=n;u++)
		{
			for(int i=head[u];i!=-1;i=nxt[i])
			{
				int v=to[i];
				if(scc[u]!=scc[v])
				{
					ou[scc[u]]++;
				}
			}
		} 
		int flag=0;
		for(int i=1;i<=num;i++)
		{
            if(ou[i]==0)
            ans=i,flag++;
        }
	    if(flag==1)
            printf("%d\n",id[ans]);
        else
            printf("0\n");

	}	
} 



配置VScode编译、调试STM32(一)手动配置makefile和debug 做嵌入式的朋友们都应该有过想要有个功能强大的IDE或者编辑器,Keil MDK5、IAR EWARM是用的比较普遍的平台了,但是两者在编辑器方面都比较弱势,当然可以设置 或者使用外部编辑器,像Sourceinsight、notePad++这样,但毕竟需要切换回来进行Build、Debug,非常麻烦。 VScode从发布至今口碑一直很好,而且里面有非常多的插件,比如彩虹括号、Code Runner、... 阅读详情

相关推荐

公文派2025:免费社区版重大安装更新!

距离上一次更新已经过去了将近一年的时间,今天我们带来了全新的免费2025社区版,该版本也是目前最新的版本,无需授权即可使用所有的功能。

似最初 1963

字节跳动上千道精选面试题还不刷起来!经典好文

Android系统庞大且错综复杂,今天小编将带领大家初探Android系统整体架构,一窥其全貌。 引言 本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制。虽然Android系统非常庞大且错综复杂,需要具备全面的技术栈,但整体架构设计清晰。Android底层内核空间以Linux Kernel作为基石,上层用户空间由Native系统库、虚拟机运行环境、框架层组成,通过系统调用(Sys

m0_57066131的博客 116

esp32-C3固件烧录用户手册

温馨提示:1.esp32-C3 BOOT脚为GPIO9,需要从芯片小板中焊接引出2.芯片小板中已经预留了所有烧录相关的引脚,大家可以按需焊接引线3.程序下载完,使用串口查看log时,需要使用220v供电使用(请务必准守用电安全)。原因:由于插座中包含继电器,计量计等耗电设备,所以usb转串口提供的3.3V电压和电流可能会出现供电不足,表现为usb转串口与电脑连接断断续续,导致无法查看log。

hbwang的博客 1万+

ABC292 D - Unicyclic Components

还有一个想法就是,就是一个连通块,n个点n条边,先连n-1条边变成一棵树,然后连最后一条边构成一整个连通块,那这个连通块只有一个环。直接用并查集维护连通性就可以,暴力维护每一个连通块的点的数量和边的数量,判断是否相等即可。然后只需要维护每个连通块的环的数量就可以了。

weixin_62528401的博客 292

手把手教你用BQ Studio给BQ40Z50电量计“做体检”:从Golden Learning到精度验证的全流程实操

本文详细介绍了如何使用BQ Studio对BQ40Z50电量计进行全流程调试,从Golden Learning到精度验证。通过硬件连接、参数配置和优化技巧,帮助工程师提升电池管理系统的精度和性能,适用于BMS开发和电量计校准的实际应用场景。

weixin_30824599的博客 450

爬虫实战:抖音视频搜索数据爬虫开发实战(附完整Python源码)

【代码】抖音视频搜索数据爬虫开发实战(附完整Python源码)

weixin_61226361的博客 3596

Jmeter 分布式压测常见坑以及解决方案

今天我们这篇文章就给大家把一些分布式搭建过程中的常见问题以及对应的解决方案进行汇总。

主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。 1144

手把手教你用ZEMAX复现贝塞尔光束:从Thorlabs锥透镜到Edmund透镜的完整光路搭建

本文详细介绍了如何在ZEMAX光学设计软件中复现贝塞尔光束,从Thorlabs锥透镜到Edmund透镜的完整光路搭建过程。通过逐步指导,帮助研究人员和工程师掌握光学设计技巧,实现无衍射特性的贝塞尔光束生成,适用于激光加工和生物成像等领域。

weixin_33737774的博客 179

【寸铁的刷题笔记】图论、bfs、dfs

【寸铁的刷题笔记】图论、bfs、dfs 代码注释清晰详实,对题目有详细的模拟分析图进行题目的剖析! 图论、bfs、dfs章节来啦!

寸铁的博客 1628

java实现自动发送微信QQ消息(可发图片)

自动发送微信/QQ/微博等消息 一:功能:实现发送QQ/微信/微博消息,程序控制。 效果演示(实现自动发生QQ微信消息给女友,发微博信息也可以就不演示了) 二:原理讲解:将剪贴板的内容给发送到QQ微信中去,复制粘贴发送。 模拟真实操作进行发送信息。 三:前期准备,软件安装,及初步测试。...

XURUNFA950827的博客 1万+

AI:270-基于ASFF改进YOLOv8检测头的多尺度特征融合方法详解与实战

ASFF是一种基于自适应特征融合的策略,能够动态调整不同尺度特征的融合权重,适应场景中不同大小的目标。传统的YOLOv8检测头使用固定的特征融合策略,而ASFF则通过引入学习参数,使得网络能够根据输入图像的特征自适应地选择不同尺度特征的重要性。这一策略对于检测小目标或尺度变化大的目标具有显著优势。本文提出了一种改进YOLOv8检测头的新方法,通过引入自适应空间特征融合模块(ASFF),有效提升了多尺度目标检测的性能,特别是在小目标检测任务中的表现。

一键难忘的博客 3911

【蓝桥杯】每日四道填空题(两道真题+两道模拟题|第二天

【蓝桥杯】每日四道填空题(两道真题+两道模拟题|第二天

m0_74215326的博客 1526

(五)激光线扫描-位移台标定

线激光属于主动测量方式,但是由于线激光的特性,我们只能通过提取激光中心线获取这一条线上的高度信息,那么要进行三维重建的话,就需要通过平移或者是旋转的方式,来让线激光扫描被测物体的完整轮廓,也就是整个表面。激光线的密度越高还原出来的物体越细腻,但由于数据量大,也会导致速度变慢。下面以位移台为例讲解,如何标定位移台。

FlyWine的博客 2889

算法成长记录

如果只看结果,150题其实不算多。但对我来说,这段过程最大的意义在于:从“完全不会写基础算法”到现在“至少能入门、能做一部分题”算法这件事,可能确实需要一定的积累。很多东西不是一下子就会的,而是在不断重复中慢慢建立起来的。写这篇文章,也是给自己做一个记录。如果以后再回头看,希望能看到一点自己的变化。

2403_87538634的博客 752

ssm框架搭建

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

蓝桥杯上岸必背!!!(第六期树与图的遍历)

蓝桥杯上岸必背!!!(第六期树与图的遍历)

寸铁的博客 462

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

240729.学习日志——《离散数学及其应用》学习总结

这门课是我校计算机科班在第二学期开的课程,其重要性可见一斑,我作为CSDIY的一员,当然也不能落下学习,于是从上学期中段(刷完CCCS后)就开始刷离散数学视频了,但也只是入门了集合论的那一部分,到了假期,入手了黑书才又才刷起来,趁着回家前一股劲刷完了。

Rain050415的博客 1330

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Pyats,一个网络测试自动化的python神器!

今天聊聊网络运维和测试中的实用工具——Pyats。这是思科开发的Python Automated Test System,专为网络工程师设计,用于自动化网络设备的测试和验证。

伤心的辣条 905

测试人员工作中所需的Linux知识!

1、Linux系统简单介绍 Linux是一套免费使用, 支持多用户、多任务、支持多线程和多个核心CPU的操作系统;很多中型, 大型甚至是巨型项目都在使用Linux。

主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。 941

一份适合所有算法学习者的刷题手册:系统路径+项目模板+面试题库(附 GitHub 项目)

本文推荐一个高质量开源项目:algorithm-structure。项目整理了算法知识体系、刷题顺序、代码模板、实战方向与面试真题,非常适合大学生、嵌入式/后端程序员、算法工程师入门与进阶使用。

qq_64978731的博客 1235

业务流程遍历测试:高效揪出隐藏Bug的秘诀!

在项目测试实践中,业务流程测试是把系统各个模块连通起来运行,模拟真实用户实际的工作流程,对用户需求定义的功能进行测试的过程。 业务流程遍历图是由点和边组成的用以描述系统的图形,通过建立一个模型来抽象出应用程序的操作行为,然后从中派生出测试用例来验证应用程序。

伤心的辣条 779

在 Switch 和 PSVita 上追番:wiliwili 第三方B站客户端完整实操笔记

周五晚上窝在沙发上,拿起 Switch 想把新番的最新一集刷完,打开专为**手柄**设计的 **wiliwili** B站客户端,首页的四象限布局和热榜直接就摆出来。不需要碰屏幕,A 键按几下,**弹幕**就刷起来了。原来在游戏机上刷 B 站,可以这么顺手。 ## 📺 一句话看懂这个项目 - **项目定位**:第三方 B 站客户端,浏览体验非常接近官方 PC 客户端 - **核心问题**:解

gitblog_00842的博客 917

软件测试必须掌握的Linux命令

目录 一、xshell与xftp是什么? 二、linux系统目录结构 三、系统管理相关命令 四、目录操作命令 五、文件操作命令

人生不怕起点低,就怕没追求 797

如何搭建JMeter分布式集群环境来进行性能测试

在本文中,我将介绍如何通过使用虚拟机来搭建一个 JMeter 分布式集群来进行性能测试,并使用命令行工具生成报告。

伤心的辣条 1103

iba测评题目_关于H3CNA的40道练习题,快来做个测试吧!

关于H3CNA的40道练习题,快来做个测试吧!时间:2018-06-11 17:46:35在考试之前,刷题总是避免不了的。为了能够节约时间顺带给自己考试的信心,最好是一次就能过。所以在考试之前,还是要多刷题啊。话不多说,题就这样刷起来吧!1、关于MAC地址表示正确的是(A)A、00-e0-fe-01-23-45B、00e0.fe01.2345C、00e.0fe.-012.D、00e0.fe1123...

weixin_30061949的博客 2188

接口测试用例设计指南:从入门到精准覆盖

在软件系统的复杂架构中,接口如同连接各个组件的“关节”,一旦出现问题,整个系统就可能陷入瘫痪。据统计,约40%的系统故障源于接口交互问题,而设计良好的接口测试用例能提前发现90%以上的接口缺陷。本文将深入解析接口测试用例的设计方法,帮助您构建全面的接口防护网。

software_test010的博客 739

什么是计算机软件测试中的混沌测试

混沌测试的核心思想是: 在受控环境中制造系统故障,以观察系统在遇到这些故障时的表现及其恢复能力。通过这种方式,可以发现系统中的潜在漏洞和问题,进而提高系统的鲁棒性和可靠性。

software_test010的博客 737
上一篇: 组合数学小结
下一篇: POJ2375 暴力建图+tarjan缩点
animalcoder
博客等级 码龄9年 43粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值