P5022 旅行】的更多相关文章

[题解]P5022 旅行 当给定你一颗树的时候,这题就是一道送分题,凉心啊! 但是给定你一颗基环树呢? 暴力断环直接跑. 但是数据范围\(n\le 1000\) 乱做就完事了. 考场上这样想的,对于\(m=n​\)的情况,得出来的最佳方案一定没有经过一条树边.那么我们直接枚举那条边不能走,直接\(O(n^2)​\)过就好了. 不过这样的算法有一个\(bug\),是因为\(dfs\)在节点上需要枚举哪个点最小,很可能被卡到\(O(n^3)\),但是\(ccf\)今年换配置了,而且不可能每个点都要枚…
题目连接:https://www.luogu.org/problemnew/show/P5022 \(NOIP2018 DAY2T1\) 考场上只写了60分,很容易想到当 m = n - 1 时的树的做法. 读题推一下样例不难发现,如果选择一个分支节点就必须走到头--直到一个节点没有子树. 那么我们就可以贪心的求得最小字典序序列,每次选择节点编号最小的走. 即对当前节点的所有子节点排序选择最小编号的往下进行即可. 60分code: #include <cstdio> #include <…
原题链接  https://www.luogu.org/problem/P5022 本着快csp了,做点往年的NOIp的题试试水来着,没想到水这么深 难度还挺大的,耗了我一天的时间(可能是我太菜了) 题目大意: 给你 n 个点和 m 条边,问如何遍历每个结点才能使最后的字典序最小,注意只有遍历完一棵字树的所有结点后才能回溯到他的父亲结点: 前 60 pts: 作为 NOIp2018 day2T1 来说,部分分确实给的挺足的,这 60 pts 就是哦: 看到 m = n-1 说明这是一棵树,考虑用…
发现大部分题解都是O(n^2)的复杂度,这里分享一个O(n)复杂度的方法. 题目传送 首先前60%的情况,图是一棵无根树,只要从1开始DFS,每次贪心走点的编号最小的点就行了.(为什么?因为当走到一个点u时,若不把以它为根的子树的所有点都遍历一遍的话,回溯到u的父亲后,就再也没可能遍历u的没有遍历过的儿子了.) 再看剩下40%的情况,由于题目保证图是一个无向连通图,当 边数 等于 点数减一 时图必为树,在此基础上再多加一条边,就在一棵树的基础上形成一个环(为了方便,后文仍会提到树,而后文的树指的…
题目链接:https://www.luogu.org/problem/P5022 这道题目一开始看的时候没有思路,但是看到数据范围里面有一个: \(m = n-1\) 或 \(m = n\) ,一下子有了思路. 当 \(m = n-1\) 时,这就是一棵树,以1为根节点进行搜索,每次优先访问编号小的点即可. 当 \(m = n\) 时,可知只有一个环,找到环中对应的所有边,然后遍历每一条环中的边,假设删除它,然后就变成了一棵树. 时间复杂度为:\(O(n^2)\) . 实现代码如下: #incl…
传送门 先考虑是一颗树的情况 求最小的 dfs 序 显然按儿子编号从小到大dfs 如果有多一条边怎么办 显然会有一条边不用走 直接枚举删那条边然后每次都暴力 dfs 复杂度 $O(n^2)$ 注意每个节点的儿子顺序先预处理好 不要每次都重新算 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<v…
开始写复赛题了 先放张图纪念我惨烈的卡常之路 不说了,简直悲伤 题目链接 思路么..不想写了 Code //不要在意四十行超级加速,卡常用的 #include<bits/stdc++.h> #pragma GCC optimize(3) #pragma GCC target("avx") #pragma GCC optimize("Ofast") #pragma GCC optimize("inline") #pragma GCC o…
以后必须学会面向数据编程!看半天题目不知道咋写直接爆搜,结果分少的可怜,还不如直接贪搞个60分. 观察数据,发现图至多存在一个环. 显然,如果没有环,这个题不跟你多bb,直接贪就完事了,线性复杂度. 原因十分显然,一旦你还没走到底就往回走的话,就走不完整张图了. 有环的话,这题就是个基环树. 根据题意,小Y显然是不能走完一个环的,那就简单了,直接删边开搞. 参考代码 #include<iostream> #include<cstdio> #include<cstring>…
前面几个代码都是部分分代码,最后一个才是AC了的,所以最后一个有详细注释 安利一发自己的Blog 这是提高组真题,233有点欧拉回路的感觉. 题目大意: 一个 连通 图,双向边 ,无重边 , 访问图中所有点并依次记录经过的点的编号.求记录的编号字典序最小. 题目数据分析 题目中有 M 条边,而 M 有两种情况: M = N 或者 M = N- 1 . 现在我们将 M = N的情况叫做情况一 ,M = N - 1叫做情况二 情况一和情况二分析 情况二:我们都知道,一棵生成树有N - 1条边,且要保…
好吧...一直咕..现在才过...被卡常卡到爆... 写的垃圾版本,$n^2$无脑删边..可以发现走出来的是棵树...更优秀的及数据加强版先咕着...一定写.qwq #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<vector> #define ll long long #define R register int <<…