洛谷P2921 在农场万圣节Trick or Treat on the Farm

Git救援:如何从误操作中恢复未提交的更改 摘要:本文探讨了误操作git reset --hard导致未提交更改丢失后的恢复方法。首先分析git reflog的局限性,随后介绍利用IDE本地历史记录(如IntelliJ IDEA和VS Code)进行文件恢复的具体步骤。最后建议使用文件系统恢复工具(如Linux的extundelete或Windows的Recuva)作为备选方案。文章强调定期提交的重要性,同时提供了意外发生时可行的恢复策略,帮助开发者尽可能挽回丢失的工作内容。(149字) 阅读详情

题意

每一个隔间都有一个标记,表示牛在这个隔间时下一个要去的隔间。
问:牛从每个隔间出发,最多能不重复走过多少个隔间。
隔间数1<=n<=105

分析

这个题的关键步骤有二:
①记忆化搜索:可以将每一次dfs的O(N)进化到N次搜索的总复杂度O(N),这个不难做到。

②预处理环/缩点为环:在记忆化搜索的过程中,发现在环上的记忆化不太成功,因为在环上遍历时,每次计算仍然要把整个环跑一遍,这显然有些浪费时间。针对这个弱点,可以预处理所有的环,环上每一个点跑的距离都是环长。

通过强连通分量的计算(在这个每个点出度都为1的图上退化为求环),可以将同一个环上的点分为一类,从而能计算出环长,进而预处理所有环上点的记忆化,就相当图做了缩点处理,剩下的DAG可以用记忆化直接解决。
强连通分量用了tarjan的板子.

代码

#include<iostream>
#include<vector>
#include<stack>
#include<algorithm>
using namespace std;
vector<int> G[100004];
int dfs_clock = 0, scc_cnt = 0;//时间戳,强连通分量组编号
int sccno[100004];//表示每个点属于哪个强连通块
int pre[100004];//dfs序
int low[100004];//low[u]表示u及其后带通过反向边最多能返回到哪
int sizee[100004];//每个环的size(用scc_cnt编号)
int L[100004];//记忆化搜索
stack<int> s;//存当前的节点
void dfs(int u)
{
	pre[u] = low[u] = ++dfs_clock;
	s.push(u);
	for (int i = 0; i < G[u].size(); i++)
	{
		int v = G[u][i];//下一个
		if (!pre[v])//未到过v
		{
			dfs(v);
			low[u] = min(low[u], low[v]);
		}
		else if (!sccno[v])//有可能是新的反向边
		{
			low[u] = min(low[u], pre[v]);
		}
	}
	if (low[u] == pre[u])//是第一次发现这个连通分量的点
	{
		scc_cnt++;
		while (true)
		{
			int x = s.top();s.pop();
			sccno[x] = scc_cnt;
			sizee[scc_cnt]++;
			if (x == u)break;
		}
	}
}
void find_scc(int n)
{
	for (int i = 1; i <= n; i++)
	{
		if (!pre[i])dfs(i);
	}
}
int d(int s)
{
	if (L[s])return L[s];//记忆化过程
	L[s] = d(G[s][0]) + 1;
	return L[s];
}
int main()
{
	ios::sync_with_stdio(false);
    int n,v;
    cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> v;
		G[i].push_back(v);
	}
	find_scc(n);//开始寻找强连通分量的函数

	//sccno已经处理完,1~scc_cnt
	for (int i = 1; i <= n; i++)
	{
		if (sizee[sccno[i]] > 1)L[i] = sizee[sccno[i]];//线状不选,环上最多环长个
		if (G[i][0] == i)L[i] = 1;//自环
	}
	for (int i = 1; i <= n; i++)
	{
		if (!L[i])d(i);
	}
	for (int i = 1; i <= n; i++)
	{
		cout << L[i] << endl;
	}
    return 0;
}


Vue2 - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海康监控及实时监控显示、回放、放大缩小画面、视频画面截图、截屏抓拍、摄像头控制,实时推流及播放器解决延迟卡顿等问题(详细代码) vue2,nuxt2,海康威视,海康监控,摄像头监控,vue对接海康处理接口认证规则,监控实时预览和回放功能,海康api接口,安全认证,海康开放平台,官方文档,播放海康摄像头的监控视频,海康实时监控播放详细步骤,web,黑屏,特别卡不流畅怎么办,解决无法推流,录像,连接不上,vue,海康,vue海康视频监控,海康开放平台,实时监控画面,海康插件,视频播放,回放,视频流地址,取流协议,视频sdk播放,hik,rtsp,rtmp,hls,ws,网站,网页,h5页面,后台管理系统,vue2对接海康监控设备,无法连 阅读详情

相关推荐

【Simscape】用Simscape实现三维物理仿真(三)——创建一个滑块单摆系统

1 首先创建一个Simscape Multibody 模型 (方法见 【Simscape】用Simscape实现三维物理仿真(一)——创建一个自由落体小球) 2 创建四个Solid模块 (1)摆杆 Shape : Brick Dimensions : [0.1 0.05 1] m (2)摆杆轴 Shape : Cylinder Radius : 0.02 m Le...

ReadAir的专栏 9036

洛谷 P2921 在农场万圣节Trick or Treat on the Farm题解

题意翻译 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节。 由于牛棚不太大,FJ通过指定奶牛必须遵循的穿越路线来确保奶牛的乐趣。为了实现这个让奶牛在牛棚里来回穿梭的方案,FJ在第i号隔间上张贴了一个“下一个隔间”Next_i(1<=Next_i<=N),告...

weixin_30240349的博客 564

Python | 集合(set)运算之intersection()

简介 在做力扣题的时候,有一个思路是要求解两个字符串的交集。 一般来说,求解交集的思路是遍历两个字符串,判断有无相等,有相等则添加到交集中,直到循环结束。 但是这样做,会增加很多的不必要的遍历:比如说,当一个字符串中有多个相同的元素时,该元素会被遍历多次。 因此,在求解时,我们可以先将字符串转换为set集合类型。集合中存储的元素没有顺序,且互异(即元素不可重复)。 算例 求字符串m“abcdaaa” 与 字符串n“bcddses”是否存在交集 首先将字符串转换为set类型: m = set(m) n

lovetaozibaby的博客 1万+

洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 记忆化搜索

洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 记忆化搜索 题解: 当奶牛回到已经去过的房间就停止,说明此时已经遍历了一个环。 每次都进行dfs搜索显然是会超时的,所以我们需要记忆化搜索。 所有环上的点的输出结果都是相同的,而没有搜索过的链上的点的结果可以从它的前一个已经搜索过的点中得到。具体还是看代码吧 代码如下: #include&l...

化身孤岛的鲸o的博客 377

STM32:TTL串口调试

TTL只需要两个线就可以完成两个设备之间的双向通信,一个发送电平的I/O称之为TX,与另一个设备的接收I/O口RX相互连接。两设备之间还需要连接地线(GND),这样两设备就有相同的0V参考电势。

superSmart_Dong的博客 5635

【AI智能体】Codex 浏览器操作自动化任务实战操作详解

【AI智能体】Codex 浏览器操作自动化任务实战操作详解

congge 4074

洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

题目传送门 解题思路: 这道题不怎么会做,所以就看了题解....... 首先这题n点n边还连通,那显然这题就是一棵n个树上多了一条奇奇怪怪的边(返祖边),既然只有一条返祖的边,那么也就等价于这棵树上有且仅有一个环.所以直接讨论一个点是否在环上,如果在则答案与它指向点相同,不然就等于它指向点答案+1,具体就直接大力dfs,每个点最多访问一次,故总复杂度为O(n).(这里注意下dfs不...

anshuo0835的博客 176

21天学会基于 Linux 的 NPU 固件开发--2.2 固件加载流程:request_firmware() 深度解析

本文深度解析Linux内核中NPU固件加载流程,重点剖析request_firmware()机制。内容涵盖:1)内核态与用户态的交互机制,包括同步/异步加载方式;2)NPU固件的特殊格式与加载逻辑;3)调试技巧与安全验证方案;4)提供最小化固件加载器实验。文章揭示了从文件系统到硬件初始化的完整链路,探讨了大模型时代面临的性能挑战与优化方案,如零拷贝加载技术,并提出了版本兼容性、断电恢复等关键问题的思考方向。

amy_mhd的博客 59

洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm tarjan算法

题目链接: https://www.luogu.org/problem/P2921 算法: tarjan 注意: 1:low[maxn]存:同一个连通分量中可以回到的节点的最小时间戳,即dfn的值 思路: 1:这道题目的本质就是tarjan算法 2:如果开始时这个节点就是在一个节点数大于2的环中,即一个连通分量中那么所要求的间隔数ans[i]就等于这个连通分量所包含的节点个数 3...

aiwo1376301646的博客 345

Python爬虫实战:使用最新技术爬取新华网新闻数据

在当今信息爆炸的时代,网络爬虫技术已经成为获取互联网数据的重要手段。作为国内权威新闻媒体,新华网每天发布大量高质量的新闻内容,这些数据对于舆情分析、市场研究、自然语言处理等领域具有重要价值。本文将详细介绍如何使用Python最新技术构建一个高效、稳定的新华网新闻爬虫系统。本文详细介绍了如何使用Python最新技术栈构建一个高效、稳定的新华网新闻爬虫系统。我们从基础爬虫开始,逐步添加了代理支持、用户代理轮换、请求延迟、重试机制、动态页面渲染、数据存储等高级功能,最终实现了一个生产可用的分布式爬虫系统。

2201_76125261的博客 1771

OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南——OpenClaw的赚钱底层逻辑与“记忆”革命

AI 的商业价值不在于替代思考,而在于沉淀关系。当 Agent 记住你的偏好、你的历史、你的目标,它就不再是冷冰冰的软件,而是成为数字化的关系资产。这种资产的稀缺性不在于技术复杂度,而在于时间无法被压缩——你无法用更好的算法替代 3 个月的协作记忆。在这场“记忆革命”中,护城河不是模型参数,而是用户与 AI 共同书写的历史。OpenClaw 用一套优雅的文件系统架构,将这种历史转化为可积累、可复用、可变现的数字资产。从“计算即服务”(CaaS)到“记忆即服务”(MaaS)。

冯·诺依曼 1341

洛谷 P2921 在农场万圣节Trick or Treat on the Farm (tarjan求强连通分量)

洛谷 P2921 在农场万圣节Trick or Treat on the Farm (targan求强连通分量) 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节。 由于牛棚不太大,FJ通过指定奶牛必须遵循的穿越路线来确保奶牛的乐趣。为了实现这个让奶牛在牛棚里来回穿梭的方案,FJ在第i号隔...

weixin_43179892的博客 284

做了一个3DTiles编辑器,支持3DTiles的预览和裁剪导出

3DTiles编辑器的功能极其简洁,核心就是3DTiles格式模型的预览和裁剪。为了演示方便,本文所使用的源数据为mipmap3d[1]网站所提供的无人机拍摄影像,并进行3DTiles构建。打开软件,输入的绝对路径之后,点击添加模型,就可以将模型加载进预览区。之后,点击裁剪模式按钮,默认会出现立方体裁剪框,可通过拖动句柄的方式去调整裁剪框的范围。同时,除了默认的盒体裁切模式外,还支持多边形裁切,点击多边形裁切后,可切换到顶视图,选择重绘多边形,可进行打点绘制。

兴趣使然的创作者 600

洛谷P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

题目描述 Every year in Wisconsin the cows celebrate the USA autumn holiday of Halloween by dressing up in costumes and collecting candy that Farmer John leaves in the N (1 Because the barn is not s

蒟蒻的博客 452

Camera2Demo

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

洛谷P2921 [USACO08DEC] 在农场万圣节 Trick or Treat on the Farm - 拓扑删链

仔细分析一下题目,换不同角度来看待问题 当把题目给的关系看做图的边的时候,会发现这其实是一个n个点,n条边的图,而且每个点的出度为1(一开始我画成树了。。。导致很长时间没发现自己错了,事实证明画图找例子是要在正确认识题意下的,可以先根据样例画个小图(这样不会丢失题意,再把这个图按题意拓展大点) 最重要的是敏感地发现这道题和环密切相关,题意也是在求一个环,只要找到环,算出环的大小,在环内的点答案...

Zolrk的博客 360

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

洛谷P2921/BZOJ1589[USACO08DEC]在农场万圣节Trick or Treat on the Farm

题目描述 Every year in Wisconsin the cows celebrate the USA autumn holiday of Halloween by dressing up in costumes and collecting candy that Farmer John leaves in the N (1 <= N <= 100,000) stalls...

Eirlys的博客 1051

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

洛谷P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm(tarjan缩点+记忆化)

先上链接:点击打开链接昨天上课偶然发现洛谷上也有题没有过,寒假有限几天写过题的杰作,当时只知道tarjan很厉害,什么求强联通分量怎么做完全不造。当然离上一次看强联通、点连通什么的过了快两周了,其实是有点忘记了,不过怎么写看着lrj大致还是知道的。题意:每个牛棚有个后继牛棚,每走一个牛棚可以加1,然后求出从每个牛棚出发可以得到多少的值。 当时寒假只会暴力dfs,好吧我连dfs都是抠脚的。反正也不知...

qq_37439324的博客 438

缩点【洛谷P2921】 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

【洛谷P2921】 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节。 由于牛棚不太大,FJ通过指定奶牛必须遵循的穿越路线来确保奶牛的乐趣。为了实现这个让奶牛在牛棚里来回穿梭的方案,FJ在...

weixin_30367945的博客 96

【洛谷P2921】[USACO08DEC]在农场万圣节Trick or Treat on the Farm

题目描述 每年万圣节,威斯康星的奶牛们都要打扮一番,出门在农场的N个牛棚里转 悠,来采集糖果.她们每走到一个未曾经过的牛棚,就会采集这个棚里的1颗糖果. 农场不大,所以约翰要想尽法子让奶牛们得到快乐.他给每一个牛棚设置了一个“后继牛 棚”.牛棚i的后继牛棚是next_i 他告诉奶牛们,她们到了一个牛棚之后,只要再往后继牛棚走去, 就可以搜集到很多糖果.事实上这是一种有点欺骗意味的手段,来节约他...

weixin_30580943的博客 150

【洛谷P2921】【USACO08DEC】在农场万圣节Trick or Treat on the Farm

题目传送门   分析 这很明显是一道图论题,但十分特殊的是每个点都只有一条出边,也就是出度为1,所以这个图只可能出现链和环的组合。 比如这样: 那么我们就可以想到用dfs搜出一个环之后,对其进行回溯时的赋值 首先当一条链和一个环组合时,环中的所有点答案都相同,而链上的点的答案为环的大小(节点个数)加上这个点到环的距离,而这个点到环的距离又正好是前一个回溯过来的链上的点的距离+1,所...

Fighter的博客 269

[洛谷P2921][USACO08DEC]在农场万圣节Trick or Treat on the Farm

题目大意:给你一张有向图,每个点最多一条出边,问从每个开始,走多少步会到一个已经过的点 题解:$tarjan$缩点,然后建反图$DP$ 卡点:无 C++ Code: #include <cstdio> #include <algorithm> #define maxn 100010 int head[maxn], cnt; struct Edge ...

weixin_30364325的博客 87
上一篇: 洛谷P2341 强连通分量
下一篇: 洛谷P3374 树状数组 1
engineoid
博客等级 码龄10年 6粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值