「NOIP2018」 旅行 - 基环树

NOIP2018提高组初赛题目+解析 全国青少年计算机程序设计大赛究竟何时创办? 前缀与后缀为何混淆不清? Catalan数到底表示什么? 是什么让一台只有红蓝两色球的抽奖机如此火爆? 关机的手机究竟能否带进考场? 负权回路与Dijkstra算法有什么不为人知的关系? 图灵奖到底是哪方设立? 四人郊游为何只有两人如约? 是什么让++cnt陷入无意义的循环? 双向链表究竟是何方神圣? 小猪又为何在两家商店间因巨额消费徘徊不定? 欢迎来... 阅读详情

题目描述

小 Y 是一个爱好旅行的 OIer。她来到 X 国,打算将各个城市都玩一遍。

小Y了解到, X国的 nnn 个城市之间有 mmm 条双向道路。每条双向道路连接两个城市。不存在两条连接同一对城市的道路,也不存在一条连接一个城市和它本身的道路。并且, 从任意一个城市出发,通过这些道路都可以到达任意一个其他城市。小 Y 只能通过这些道路从一个城市前往另一个城市。

小 Y 的旅行方案是这样的:任意选定一个城市作为起点,然后从起点开始,每次可以选择一条与当前城市相连的道路,走向一个没有去过的城市,或者沿着第一次访问该城市时经过的道路后退到上一个城市。当小 Y 回到起点时,她可以选择结束这次旅行或继续旅行。需要注意的是,小 Y 要求在旅行方案中,每个城市都被访问到。

为了让自己的旅行更有意义,小 Y 决定在每到达一个新的城市(包括起点)时,将 它的编号记录下来。她知道这样会形成一个长度为nnn的序列。她希望这个序列的字典序最小,你能帮帮她吗? 对于两个长度均为 nnn 的序列 AAA 和 BBB,当且仅当存在一个正整数 xxx,满足以下条件时, 我们说序列 AAA 的字典序小于 BBB。

  • 对于任意正整数 1≤i&lt;x1≤i&lt;x1≤i<x,序列 AAA 的第 iii 个元素 AiA_iAi​​ 和序列 BBB 的第 iii 个元素 BiB_iBi​ 相同。
  • 序列 AAA 的第 xxx 个元素的值小于序列 BBB 的第 xxx 个元素的值。

输入格式

输入文件共 m+1m + 1m+1 行。第一行包含两个整数 n,m(m≤n)n,m(m ≤ n)n,m(m≤n),中间用一个空格分隔。

接下来 mmm 行,每行包含两个整数 u,v(1≤u,v≤n)u,v (1 ≤ u,v ≤ n)u,v(1≤u,v≤n) ,表示编号为 uuu 和 vvv 的城市之间有一条道路,两个整数之间用一个空格分隔。

输出格式

输出文件包含一行,nnn 个整数,表示字典序最小的序列。相邻两个整数之间用一个空格分隔。

数据范围

数据范围

分析

对于m=n−1m=n-1m=n−1的数据只需要将边排个序,跑Dfs即可。而对于m=nm=nm=n的数据即为基环树的数据,可以暴力枚举环上的边,暴力断环,然后跑Dfs,找最小字典序即可。时间复杂度为O(n2)O(n^2)O(n2),对于5000的数据来说足够了。虽然思路简单,但找环,断环还是花了点时间。

代码

#include <algorithm>
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
const int N=5005;
const int INF=0x7fffffff/2;
vector<int> G[N];
vector<int> temp,ans;
int du[N],cst,ced;
int n,m,pt,vis[N],nxt[N];
int f[N],st;
void Add(int x,int y) {//为了方便,用vector存图 
	G[x].push_back(y);
}
void Dfs(int x,int prt) {
	ans.push_back(x);
	for (int i=0;i<du[x];i++) {
		int y=G[x][i];
		if (y==prt) continue;
		Dfs(y,x);
	}
}
void FindCircle(int x,int prt) {
	vis[x]=1;
	for (int i=0;i<du[x];i++) {
		int y=G[x][i];
		if (y==prt) continue;
		if (vis[y]&&!pt) {//如果访问到了已经到的点
			nxt[x]=y;//则该点在环上,并以链表形式记录 
			f[x]=1;
			pt=1;
			st=y;
		} else if (!vis[y]) {
			FindCircle(y,x);
			if (pt&&f[y]) {//如果指向的点在环上且没有出去这个环 
				nxt[x]=y;//则该点也在环上 
				f[x]=1;
			}
		}
	}
	if (x==st) pt=0;
}
void Dfs2(int x,int prt) {
	temp.push_back(x);
	for (int i=0;i<du[x];i++) {
		int y=G[x][i];
		if (y==prt) continue;
		if ((x==cst&&y==ced)||(y==cst&&x==ced)) continue;
		Dfs2(y,x);
	}
}
int main() {
	//freopen("travel.in","r",stdin);
	//freopen("travel.out","w",stdout);
	scanf("%d%d",&n,&m);
	for (int i=1;i<=m;i++) {
		int u,v;
		scanf("%d%d",&u,&v);
		Add(u,v);
		Add(v,u);
	}
	for (int i=1;i<=n;i++) {
		sort(G[i].begin(),G[i].end());//排序,让一次找到到的字典序最小 
		du[i]=G[i].size();
	}
	if (m==n-1) {
		Dfs(1,0);
		for (int i=0;i<n-1;i++) printf("%d ",ans[i]);
		printf("%d",ans[n-1]);
	} else {
		pt=0;
		FindCircle(1,0);//找环 
		int rt=st;
		for (int i=1;i<=n;i++) ans.push_back(INF);
		do {//枚举环上的边,暴力断环并找在该情况下的最小字典序 
			cst=rt;
			ced=nxt[rt];
			temp.clear();
			Dfs2(1,0);
			rt=nxt[rt];
			if (ans>temp) ans=temp;
		} while (st!=rt);
		for (int i=0;i<n-1;i++) printf("%d ",ans[i]);
		printf("%d",ans[n-1]);
	}
	return 0;
}
题解:洛谷 P5022 [NOIP 2018 提高组] 旅行 小 Y 的旅行方案是这样的:任意选定一个城市作为起点,然后从起点开始,每次可以选择一条与当前城市相连的道路,走向一个没有去过的城市,或者沿着第一次访问该城市时经过的道路后退到上一个城市。不存在两条连接同一对城市的道路,也不存在一条连接一个城市和它本身的道路。并且,从任意一个城市出发,通过这些道路都可以到达任意一个其他城市。为了让自己的旅行更有意义,小 Y 决定在每到达一个新的城市(包括起点)时,将它的编号记录下来。个整数,表示字典序最小的序列。的城市之 间有一条道路,两个整数之间用一个空格分隔。 阅读详情

相关推荐

超10万,两台Mac Studio在家就能跑满血DeepSeek,网友:这是性价比最高的大模型一体机

在AI计算领域,没有比这更强的个人电脑了。这要从它的架构说起。对于那些有本地部署满血版DeepSeek需求的用户,目前建议的配置是选购512GB统一内存 + 1TB SSD,搭载M3 Ultra芯片的Mac Studio,官网售价74249元,可以叠加国补、教育优惠、12期分期等,这可能是目前门槛最低、性价比最高的满血版DeepSeek本地部署方案。对于企业而言,尽管Mac Studio确实可以部署6000亿参数的大模型,但在内存带宽、模型精调服务等方面,跟专用的大模型一体机仍有差距,采购需要谨慎评估。

2501_90444774的博客 1914

5964. 【NOIP2018提高组D2T1】旅行

Description 小Y是一个爱好旅行的OIer。她来到X国,打算将各个城市都玩一遍。 小Y了解到,X国的n个城市之间有m条双向道路。每条双向道路连接两个城市。不存在两条连接同一对城市的道路,也不存在一条连接一个城市和它本身的道路。并且,从任意一个城市出发,通过这些道路都可以到达任意一个其他城市。小Y只能通过这些道路从一个城市前往另一个城市。 小Y的旅行方案是这样的:任意选定一个城市作为起点...

zsjzliziyang的博客 973

如何优雅地进行频谱分析—— 一行代码实现绘制MATLAB频谱、功率谱图

之前的文章里讲了关于信号频谱、能量谱的相关理论和MATLAB编程实现方法: Mr.看海:信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析) Mr.看海:频域特征值提取的MATLAB代码实现(频谱、功率谱、倒频谱) 不过对于刚刚开始进行这方面研究,或者对MATLAB不甚熟悉,抑或者不想花太多时间用在编程这件事上的同学,目前缺少一种足够便捷、高效、可靠的代码。 所以笔者想做这样一件事:编写一个函数,同学们只需要导入自己要分析的数据,并按照自己的需求设置部分选项,调用一行代码就可以实现绘制频

fengzhuqiaoqiu的博客 2万+

C++NOIP2018旅行

C++NOIP2018旅行 题目描述 小 Y 是一个爱好旅行的 OIer。她来到 X 国,打算将各个城市都玩一遍。 小Y了解到, X国的 nn 个城市之间有 mm 条双向道路。每条双向道路连接两个城市。 不存在两条连接同一对城市的道路,也不存在一条连接一个城市和它本身的道路。并且, 从任意一个城市出发,通过这些道路都可以到达任意一个其他城市。小 Y 只能通过这些 道路从一个城市前往另一个城市。 ...

xw25518的博客 829

HLM(多层线性模型)在stata中语句

在阅读CEPS中发现有些研究采用的是HLM模型,HLM简单来说用一个方程跑两个回归。举例,对学习成绩影响因素,不同层有不同的影响,如在个体层面上个体特征会对成绩产生影响,在学校层面学校排名等因素会对成绩产生影响,两种因素不在一个层面,每层造成的差异都不相同。 在找相关语句时候发现操作这个语句的软件大多是SPSS和HLM,对于stata操作者并不友好。因此,在有限资料中总结了HLM在stata中的语句,后面会附上学习视频和链接。 先放语句,后面对方程式一个大致解析。由于针对HLM有一本书的介绍,可能一篇文章无

weixin_44652251的博客 1万+

PADS Layout新手必看:从元件摆放到地线处理的10个实用技巧

本文为PADS Layout新手提供了10个实用技巧,涵盖元件摆放、地线处理等关键环节。从功能模块化布局到高频信号处理,再到电磁兼容性设计,帮助初学者快速掌握PCB设计核心技能,提升Layout效率和质量。特别适合需要优化PADS Layout工作流程的设计师参考。

stone的博客 251

5962. 【NOIP2018提高组D1T2】货币系统

Description 在网友的国度中共有 n 种不同面额的货币,第 i 种货币的面额为 a[i],你可以假设每一种货币都有无穷多张。为了方便,我们把货币种数为 n、面额数组为 a[1..n] 的货币系统记作 (n,a)。 在一个完善的货币系统中,每一个非负整数的金额 x 都应该可以被表示出,即对每一个非负整数 x,都存在 n 个非负整数 t[i] 满足 a[i]×t[i] 的和为 x。然而, ...

zsjzliziyang的博客 784

OneNET物联网平台实战:从零搭建到双向数据通信测试

本文提供了一份详细的OneNET物联网平台实战指南,从零开始讲解平台搭建与设备创建,并重点演示了如何通过MQTT协议实现设备数据上报与云端命令下发的双向数据通信测试。通过模拟设备连接与数据交互,帮助开发者快速理解物联网核心通信流程。

weixin_29306571的博客 350

NOIP-2018-J1-真题解析

一、选择题 1、D,基础题,考察计算机硬件系统-输出设备,扫描仪,键盘,鼠标属于输入设备,打印机,显示器等属于输出设备。 2、D,基础题,考察进制转换,可以将A, C, D均转换为熟悉的10进制数据后再观察,可得ABC均等于617,D等于512+64+32+8+2+1=619 3、D,基础题,考察存储单位,1MB=1024KB=1024*1024B 4、B,基础题,考试计算机网络常识,广域网-WAN,局域网-LAN,城域网-MAN 5、B,竞赛常识题,中国计算机协会是1984年创办首次全国青少年计算机程序设

严老师编程 1849

【时时三省】vector cast 常见错误解决/vcast常见错误解决

介绍在使用 vector cast/vcast 软件的过程中,遇到的异常问题。其它异常可以私信解决(购买专栏的前提下)。

时时三省的博客 447

Open3D 点云重叠区域检测【2025最新版】

本文介绍了一种基于八叉树和KD树的点云重叠区域检测方法。算法提供两种检测模式:八叉树(快速)和KD树(精确),支持可视化显示和详细统计信息输出。实现功能包括边界扩展、索引去重、精度调节等,可通过max_depth参数控制八叉树细分程度,distance_threshold调整检测精度。代码使用Open3D库,能自动计算并显示各点云的重叠比例和点数统计,最终结果以不同颜色区分重叠与非重叠区域。该方案适用于三维点云数据处理中的重叠分析任务。

点云侠的博客 598

[NOIP2018 提高组] 旅行 题解

小 Y 的旅行方案是这样的:任意选定一个城市作为起点,然后从起点开始,每次可 以选择一条与当前城市相连的道路,走向一个没有去过的城市,或者沿着第一次访问该 城市时经过的道路后退到>上一个城市。需要注意的是,小 Y 要求在旅行方案中,每个城市都被访问到。不存在两条连接同一对城市的道路,也不存在一条连接一个城市和它本身的道路。并且, 从任意一个城市出发,通过这些道路都可以到达任意一个其他城市。为了让自己的旅行更有意义,小 Y 决定在每到达一个新的城市(包括起点)时,将 它的编号记录下来。

MingJunYi的博客 969

YOLOv13涨点改进 | 全网独家创新、高效涨点改进篇 | CVPR 2024 | YOLOv13引入SHSA单头自注意力模块,减少冗余的多头注意力,轻量化改进,助力目标检测和图像分类任务高效涨点

本文提出了一种改进YOLOv13模型的新方法——SHSA(单头自注意力)模块,用于提升目标检测任务的计算效率和推理速度。SHSA通过简化多头注意力机制为单头结构,显著减少了计算冗余和内存占用。实验表明,该模块在保持精度的同时,在GPU、CPU和移动设备上分别实现了3.3倍、8.1倍和2.4倍的加速效果。文章详细介绍了SHSA的结构原理、核心代码实现方法,以及如何集成到YOLOv13的配置文件中。这种改进特别适合资源受限设备,为实时目标检测提供了更优的速度-精度平衡方案。

Ai缝合怪、助力小伙伴高效发论文 506

学习笔记 ---- 基环树

破环成链并复制一倍接在后面,考虑固定一个起点的环可以由一个长度和环相等的区间表示。对于环上的点,可以求出以它为根的子树的最大点独立集。这里的子树不包括环上的点。那么把环找出来,枚举不被经过的边打上标记,然后按照树的方式得到一个答案,将所有答案取最优即可。为起点,每次往编号最小的儿子的子树里递归。这个是简单的:如果不位于同一棵基环树,那么显然不可能。个点不选/选,第一个点不选/选 的最大点独立集。最后如果每个位置上的数能变成一个合法的数,那么返回。号点不选/选 的最大点独立集。单调不降,输出最小的操作次数。

weixin_55851276的博客 2242

WINCC7.3破解文件

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

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【图论·算法】基环树(+习题[NOIP2018]旅行)

有关基环树的环 基环树是一种图,它由一个环组成,环上每个点都是一棵树点树根,所以称为基环树。当然,一棵树上连一条边也会变成基环树。 基环树一般分成环和树来分别处理(显然环的处理较为麻烦),首先得找到环。 那么如何去处理基环树的环呢?我们考虑用搜索来解决。 代码如下: void find_loop(int u) { vis[u]=++tot; for (int i=0;i&lt;a[u].siz...

Ronaldo7_ZYB的博客 605

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

基环树(环套树) 总结

基环树(环套树) 总结

glorious_dream的博客 3805

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

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

P5022 [NOIP2018 提高组] 旅行(基环树应用)

无向图的双连通分量问题、基环树应用、dfs递归处理

酒姬民的博客 652

NOIP 2018 提高组 复赛 第二天 第一题 旅行 travel 基环树 AC代码+60分代码(深搜dfs)

NOIP 2018 提高组 复赛 第二天 第一题 旅行 travel AC代码+60分代码(深搜dfs) 总目录详见:NOIP 提高组 复赛 试题 目录 信奥 历年 在线测评地址:https://www.luogu.com.cn/problem/P5022 1.AC代码 2.60分代码(深搜dfs) 针对如下数据进行编码 很明显,是一棵树,从城市1开始遍历,在树上遍历时,只需要注意遍历当前城市的孩子时,将孩子先遍历出来,按自小到大排序,再进行下一步的遍历即可。 60...

mrcrack的博客 468

[NOIP 2018] 旅行(暴力) | 错题本

文章目录题目分析错因代码 题目 [NOIP 2018] 旅行 分析 考虑树的情况,对每个结点的儿子按大小排序,从 1 开始 DFS 得到的 DFS 序即为答案。由于 n=mn = mn=m 或 n=m+1n = m + 1n=m+1,当 n=mn = mn=m 时找到基环树的环暴力枚举删一条边找 DFS 序最小的那个即可。 错因 找环的栈在退出的时候忘了 pop,居然只 MLE 了 28 pts。 代码 #include <algorithm> #include <cstdio>

ixRic 315

[洛谷] [NOIP2018 提高组] 旅行 加强版 - 基环树 | DFS / Tarjan / topoSort

题目链接:https://www.luogu.com.cn/problem/P5049 题目描述 小 Y 是一个爱好旅行的 OIer。她来到 X 国,打算将各个城市都玩一遍。 小Y了解到, X国的 n 个城市之间有 m 条双向道路。每条双向道路连接两个城市。 不存在两条连接同一对城市的道路,也不存在一条连接一个城市和它本身的道路。并且, 从任意一个城市出发,通过这些道路都可以到达任意一个其他城市。小 Y 只能通过这些 道路从一个城市前往另一个城市。 小 Y 的旅行方案是这样的:任意选定一个城市作为起点,然后

PushyTao的博客 379

NOIp提高组2018 旅行————基环树+搜索

题解:本题主要考查基环树+搜索。 简要题意:nnn个城市之间有mmm条双向道路,小Y每到达一个新的城市(包括起点)时,将它的编号记录下来。形成一个长度为nnn的序列。求这个序列的字典序最小。 对于100%100\%100%的数据和所有样例,1≤n≤50001≤n≤50001≤n≤5000且m=n−1m=n−1m=n−1或m=nm=nm=n。 1.对于60%60\%60%的数据:我们注意到m=n−1...

wly1127的博客 257

【LG5022】[NOIP2018]旅行

【LG5022】[NOIP2018]旅行 题面 洛谷 题解 首先考虑一棵树的部分分怎么打 直接从根节点开始\(dfs\),依次选择编号最小的儿子即可 而此题是一个基环树 怎么办呢? 可以断掉环上的一条边,这样就变为一棵树了 再用上面的方法做即可 \(tips\) \(:\) 断环上的边,其实可以直接用\(tarjan\)把桥求出来 不是桥的就是环上的边 考场上的代码有点乱 #includ...

172

P5049 [NOIP2018 提高组] 旅行

P5049 [NOIP2018 提高组] 旅行 题意: 一棵树(可能是基环树),从1出发,每到达一个新的点就记录下编号。求一种走法使得记录下来的编号字典序最小。 1≤n≤500000 m=n−1 或 m=n 题解: 如果不是基环树,那直接每次走字典序小的点即可 对于基环树: 第一个方法: 暴力删边将基环树变为一颗普通的树,然后计算答案,复杂度是O(n * n) 这个方法好像只能过P5022 [NOIP2018 提高组] 旅行 这个没加强数据的题,P5049过不了 第二个方法: 参考题解 对于基环树,我们在环

qq_35975367的博客 514

[NOIP2018TG]旅行

[NOIP2018TG]旅行 树很简单,对每个点sort儿子,贪心走就行了 基环树呢? 如果是1e5可能不太好做 但是5000的话枚举断边就可以\(n^2\)了 #include<bits/stdc++.h> using namespace std; const int _=5005; int re(){ int x=0,w=1;char ch=getchar(); ...

123
上一篇: 「Tyvj1432」 楼兰图腾 - 树状数组
下一篇: 「HNOI2002」 营业额统计 - 平衡树/STL set
TbYangZ
博客等级 码龄8年 13粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值