- 2024-11-01[IOI2008] Island
算法题意可以转化成给定一个基环树森林,求每颗基环树上的直径长度之和找环按照基环树的方法找即可求直径(i)直径不经过环对于以环上每一个点的子树,记录直径即可(ii)直径经过环断环为链,考虑单调队列处理,具体的关于为什么需要断环为链:方便快速处理环上两点间
- 2024-10-29【算法学习】基环树
基环树基环树就是类似于在树上加了一条边形成了环,去点环上的一条边后就会变成数,如下图。这是一个\(n\)个点\(n\)条边的连通图,如果不保证联通,它就会成为基环树森林。外向树:每个点都只有一条入边,因为向内上。内向树:每个点都只有一条出边,因为向外少。怎么用呢?因为有环的性
- 2024-10-07多校 A 层冲刺 NOIP2024 模拟赛 03
多校A层冲刺NOIP2024模拟赛03T1五彩斑斓(colorful)签到题直接暴力枚举是\(O(n^4)\),考虑使用\(bitset\)优化,对每个点开个\(bitset\),预处理它所在一行它及它之前相同颜色的位置,这样就只用枚举另一个点所在列,时间复杂度为\(O(n^3+\frac{n^4}{w})\)。T2错峰旅行(travel)
- 2024-09-192024.9.18 LGJ Round
C\(n\timesm\)个人,选择某人的代价是\(a_{i,j}\),可以使其负责其所在的行/列,问使得所有行列被负责最小代价。\(nm\le10^5\)。若选择\(a_{i,j}\),看做是第\(i\)行跟第\(j\)列连了一条有向边,你发现最后图的形式是一个基环树森林。但是边是有向的,不难发现如果我们确定了基
- 2024-09-05基环树
找环无向图拓扑排序找环点击查看代码boolvis[N];queue<int>q;voidtp(){ for(inti=1;i<=n;i++)if(du[i]==0)q.push(i); while(!q.empty()) { intx=q.front(); for(inti=h[x];i;i=nxt[i]) { inty=to[i]; if(du[y]>1)//入度>=2的点即为环上的点
- 2024-09-03基环树的一些基本问题
其实没啥。主要就两个一、求基环树的最大直径二、判环的简洁办法其中第一个问题比较关键,是一个非常常用的基环树森林模型。而且我基环树虽然写了7,8道了,写的却总是很冗长。基本全靠码力弥补才勉强不出错。。最近写的题目也是调了很久不出来,就是代码不够简洁导致的。很多细节可
- 2024-09-01学习笔记 ---- 基环树
目录算法解析基环树与基环森林模板例题[NOIP2018提高组]旅行[ZJOI2008]骑士[IOI2008]IslandLongWaytobeNon-decreasing算法解析基环树与基环森林基环树是指有且仅有一个环的树。基环森林是指若干棵基环树构成的森林。对于有向图,基环树可分为内向基环树和外向基环
- 2024-08-18AtCoder Beginner Contest 367 题解(E~G)
E转换关系看作有向边,\(n\)点\(n\)边构成基环树森林,基环树森林k后继唯一,记f[i][j]为点\(i\)的\(2^j\)级祖先,随便倍增。F一眼哈希,不知道有没有不哈希的做法。在这里我们不关心元素的顺序,只关心元素是否出现以及出现几次,考虑一个\(n\)位\(n+1\)进制数,\(a_i\)出现一
- 2024-08-05【笔记】非传统题选讲 2024.8.5
今天睡着了。发了只是为了完整性。[CF1672E]notepad.exe先二分得到总长度\(\suml_i+n-1\)记为\(w_1\),然后考虑其它行数\(h\),最优的情况只能是每一行都用换行顶替一个空格,此时面积为\(w_h\cdoth=w_1-h+1\),所以\(w_h=\left\lfloorw_1/h\right\rfloor\)为唯一可能更新答
- 2024-07-24[Tkey] Transport Nekomusume II
CL-20考虑定义一条有向边\(u\rightarrowv\)的意义为\(u\)把窝让给了\(v\),那么每个点一定入度为\(1\),所有的边会形成一个外向基环树森林。贪心地把猫娘按照权值从大到小排序,每个猫娘看成一条无向边,那么可行的方案一定会形成一个基环树森林。用并查集维护所有窝组成的基环
- 2024-07-22基环树
基环树一棵树多了一条边。。。就变成了基环树。首先把这个环找出来,对于这个环,断掉一条边就变成树了,固定一个端点跑树形dp。城市环路很板子,没坑点。找环可以用并查集,不用知道具体有哪些点。我们只需要找出其中一条边的两个端点作为断点就好了。for(inti=1;i<=n;i++){ int
- 2024-07-21基环树
定义(图片来自这篇文章)基环树:有\(n\)个点\(n\)条边的连通图外向树:每个点出度为\(1\)内向树:每个点入度为\(1\)找环\(dfs\)拓扑排序一般处理方法因题而异,一般有两种常用的第一种是先断掉环边,把环上点当作根,处理每一棵子树,再在环上处理,可能需要
- 2024-07-20基环树
基环树定义在树形结构中添加一条边形成的图。分类无向图基环树内向基环树,每个点的出度为1。外向基环树,每个点的入度为1。找环:方法1:无向图基环树找环。拓扑排序,去掉环以外的点,剩下的就是一个那个环。方法2:有向图和无向图均适用。原理:在搜索树中检查一个点\(x\)的
- 2024-07-18基环树
在树形结构中添加1条边形成的图分类:1.无向图基环树2.内向基环树,每个点出度为1的情况一棵内向基环树3.外向基环树,每个点入度为1的情况找环方法1:无向基环树找环1.统计节点的度数deg[i]2.将度数为1的点入队3.循环从队首取出节点x并将x的邻接点y度数减14.若deg[y]==1
- 2024-07-17图中的环
图中的环2024.7.17AcWing4216.图中的环:https://www.acwing.com/file_system/file/content/whole/index/content/4187139/一、题目二、题解1.基环树如下图所示,基环树中只有一个环,且整个图是联通的。可以推断出它的性质:连通图;节点数=边数。2.并查集两个基本操作:判
- 2024-07-13Koxia and Game
这道题目就看官方解答吧本来这道题目是构造题,但是题目要求计数,计数肯定就很多了,所以我们不能像传统构造题一样,去想如何特殊地构造出一个序列来,这里就要去想满足条件的序列有什么共性,所以我们就假设已经找到了序列\(c\),然后去想想Koxia怎么必胜于是不难发现引理一(这个可以感性理
- 2024-06-23基环树和笛卡尔树
基环树就是比平常的树多一条边,有\(n\)条边,也就有一个环在里面。基本思想就是断环,跑树形\(dp\),或者用拓扑排序判环去跑环形\(dp\)。树的直径今天才了解到的,用两遍\(dfs\)跑。首先第一遍找到离根节点最远的节点\(u_1\),然后再从\(u_1\)找到离它最远的节点\(u_2\),那么
- 2024-06-13基环树和笛卡尔树
1.基环树定义:有\(n\)个点和\(n\)条边的图,就是给树连了一条边,此时图中恰好只有一个环解决这类问题时,通常断环,变成普通的树的问题,然后再特殊处理环P2607[ZJOI2008]骑士click断环成树后就跟没上司一样是个树形dp,注意森林,longlong就行了,具体细节见这里P5022[NOIP2018提高组
- 2024-06-11基环树
基环树1.定义基环树是一个由n个点及n条边组成的连通图,其比树多出一条边,所以称作基环树。2.分类基环树分为无向基环树和有向基环树。而有向基环树又分为内向基环树和外向基环树。内向基环树,即每个点出度为1的基环树;外向基环树,即每个点入度为1的基环树。3.解决方式对于有关
- 2024-06-11基环树
基环树的定义为:一个有向或无向图中,只含有一个环的图,形式化的表达为:关于这种形状关键点主要在于找环,那么我们可以一步一步的去寻找,当这个点走着走着走到了某个环里,我们可以直接遍历整个环,然后打个标记,这样环就找到了具体的例题:E-ReachabilityinFunctionalGraph本题就是一
- 2024-05-29基环树找环
abc167_dTeleporter#include<bits/stdc++.h>#defineptprintf(">>>")#definemid(((l)+(r))/2)usingnamespacestd;typedeflonglongll;typedeflongdoubleld;constllN=1e6+10,inf=1e18+10,mod=1e9+7;vector<ll>G[N];map&
- 2024-05-13CF875F Royal Questions
传送门\(a[i]\)和\(b[i]\)之间连一条\(w[i]\)的边,相当于把公主当作限制条件。考虑选当前这条边是否合法:1.若选了当前这条边后变成了一棵树,那即为\(x\)个点和\(x-1\)个边,可以任意舍去一个点(因为可以有王子不结婚),所以一定合法。2.若选了当前这条边后,变成了一棵基环树,即
- 2024-04-20基环树算法总结
基环树算法总结一、什么是基环树基环树,顾名思义,有两个要素:环和树。因此,基环树就是一棵树的一个节点,扩成一个环,做题时,多棵基环树组成的基环树森林,常以如下方式出现:每个点只有一个出边。每个点只有一个入边。图中一共有\(n\)个点,\(n\)条边。那么,基环树类型的题目应该怎
- 2024-04-12基环树
byDuck.感觉都是神秘乱搞。一般的处理方式:把整个环当成根。断环。CF711DDirectedRoads正难则反,考虑统计成环的数量。我们先把环搜出来,那么环上的边只能有全部顺时针或者全部逆时针两种方向,环外的边任意。设环长为\(L\),那么就有\(2^{n-L}\times2\)种有环的情况,从而
- 2024-04-08基环树小结
基环树就是根节点基于环生长的一棵树,特点是\(n\)个节点\(n\)条边。如果\(n\)个节点\(n\)条边的图不联通那么是一个基环森林。很好证明,\(n\)个点\(n-1\)条边的联通图仅能是一棵树,现在从任一点引出一条边到任一点,由于两点先前一定联通,则在连接后原路径上的任意两点均有