前言 ? 单调队列并不是太难的东西,不应其应用到的题目困难而觉得单调队列困难. ? 我第一次遇见单调队列时是在学图论时,遇到了Island这道题(见基环树专题),当时的我对单调队列一无所知,而对其优化更是懵,所以当时就懵着将题解半抄半写地打了出来,但还是不懂.现在来看,单论单调队列,它是不难的,难的 ...
分类:
其他好文 时间:
2019-11-12 16:11:54
阅读次数:
68
原理简介 非严格次小生成树是在最小生成树有多棵时未被选为最小生成树的树,而严格最小生成树要求其边权和是第一个大于最小生成树的边权和。两者算法大致相同,都是枚举非树边加入树中,很明显会形成一棵基环树,在基环的环(不包含加入的边)中找出最大值被加入边代替更新答案,只是单纯找最大得到非严格,而找出第一个严 ...
分类:
其他好文 时间:
2019-11-11 00:55:39
阅读次数:
126
考前随便做点水题愉♂悦身心 有助于退役 这题意思其实就是说要把外向基环树森林改成一个环的最小代价。 依照套路,先对每棵基环树的树做dp,这里因为要是环,要把所有的树都拆成链,然后连接。所以考虑以最小代价拆掉每一个树。 因为对于树的每层,只能选择出一个儿子作为链的部分保留下来,所以贪心的尽量选权值大的 ...
分类:
其他好文 时间:
2019-11-08 21:10:49
阅读次数:
102
基环树 找环,环外处理,环上处理 #include<bits/stdc++.h> #define re return #define inc(i,l,r) for(int i=l;i<=r;++i) using namespace std; template<typename T>inline vo ...
分类:
其他好文 时间:
2019-10-23 12:00:57
阅读次数:
77
做法 把环找出来,如果在环上(u,v)两点的时候,u的其他子树都走完了,v上第一个还有除v存在的子树没走完的 祖先,祖先的最小子节点小于v,则回去 Code cpp include typedef int LL; const LL maxn=1e6+9,inf=0x3f3f3f3f; inline ...
分类:
其他好文 时间:
2019-10-06 15:04:19
阅读次数:
68
这是一场比赛的 T4T4 ,身为蒟蒻的我当然没有想出来。 后来对基环树有了一点了解之后就来肝这道题。 首先对于一条边,只有两种情况 1.在环上,那么这个环只有全部正向或全部反向才可以成立,而总方案数显然是 2m ,其中 mm 是环上的边数,所以方案数就是 2m-2 2.不在环上,那么这种边就可以随意 ...
分类:
其他好文 时间:
2019-10-05 22:49:38
阅读次数:
111
基环树,又称环套树,顾名思义,为树上多一条边,$n$个节点$n$条边。 $First$无论啥题,你基环树总得找环,不找环你玩啥呢…… 我找到了三种方法找环,各有千秋,注释中有,就直接放上来了 c++ //https://www.cnblogs.com/akura/p/10838613.html in ...
分类:
其他好文 时间:
2019-10-05 00:47:19
阅读次数:
82
大意: 给定一个基环树, 求删除一条环上的边使得直径最小. 直径分两种情况 环上点延伸的树内的直径 两个环上点的树内深度最大的点匹配 第一种情况直接树形dp求一下, 第二种情况枚举删除的环边, 线段树维护一下即可. ...
分类:
其他好文 时间:
2019-10-05 00:35:56
阅读次数:
85
题解 P5022 【旅行】 "题目链接" 一道基环树的题记得我当时在考场连dfs都没想到(我真的是太弱了QAQ) 这道题知道思路其实很简单,当n = m 1时,图是一个树,直接从第一个点dfs就可以得到答案,n = m时说明图里有一个环,删掉环上的任意一条边就可以让图变成一个数,枚举删除那一条边得到 ...
分类:
其他好文 时间:
2019-10-04 16:42:22
阅读次数:
98
"ZROI 1006" 可能一眼看起来是个很不可做的题,但你仔细思考一下,你发现.....给的是个$n$个点$n$条边的东西... 那么它可能是个啥呢? 是个基环树?是个森林+环?是个基环树+森林? 都是有可能的! 然后我们发现,答案就是连通块个数+环数 1. 为什么呢? 假设有$x$个连通块,$y ...
分类:
其他好文 时间:
2019-09-23 15:21:11
阅读次数:
96