首页 > 其他分享 >基环树和笛卡尔树

基环树和笛卡尔树

时间:2024-06-13 22:45:00浏览次数:6  
标签:60pts 笛卡尔 long 基环树 枚举 直径 click

1.基环树

定义:有\(n\)个点和\(n\)条边的图,就是给树连了一条边,此时图中恰好只有一个环

解决这类问题时,通常断环,变成普通的树的问题,然后再特殊处理环

P2607 [ZJOI2008] 骑士

click

断环成树后就跟没上司一样是个树形dp,注意森林,long long就行了,具体细节见这里

P5022 [NOIP2018 提高组] 旅行

click

  • \(m = n - 1\)

就是树

肯定以\(1\)为起点,每次向下搜之前对能到的城市排个序,挑小的走

期望\(60pts\),实测\(60pts\)

这里面排序那个for上限应该是n写错了所以56

  • \(m = n\)

基环树,没森林

考虑枚举删掉的边,每删一条,就跑一遍情况1,是\(O(nm)\)的

谷上可过,gxyz过不了,T了3个,这是谷子结果,应该是更答案慢了些

可以剪枝优化,就是每走一步就看优不优,不优就不走了

like this

P4381 [IOI2008] Island

click

题目要求的是基环树森林中每个单元的直径之和

我们考虑一下基环树内的直径类型:过环的和不过环的

(ps:不过环的放这图是我一开始没想到)

对于不过环的,可以预处理,接下来考虑带环的

如果\(i,j\)是直径出入环的两点,那么该直径可以分解为环上一部分和以\(i,j\)为端点的两根链

暴力就是枚举\(i,j\),将对应部分求得并加在一起,从中取最大与第一种情况比最大就行

可以混\(50\)

标签:60pts,笛卡尔,long,基环树,枚举,直径,click
From: https://www.cnblogs.com/MLP123/p/18246898

相关文章

  • 过滤条件之分组 group by、having、distinct、order by、limit、正则、多表查询和子查
    【一】过滤条件之分组groupby【1】引入--按照指定条件对所有数据进行分组--对员工进行分组按照年龄/部门--...select*from*where*groupby*;【2】按照部门分组(1)查询数据select*fromempgroupbypost;#第一次使用部门分组会报错mysql>select*f......
  • 基环树
    基环树1.定义基环树是一个由n个点及n条边组成的连通图,其比树多出一条边,所以称作基环树。2.分类基环树分为无向基环树和有向基环树。而有向基环树又分为内向基环树和外向基环树。内向基环树,即每个点出度为1的基环树;外向基环树,即每个点入度为1的基环树。3.解决方式对于有关......
  • 笛卡尔树
    笛卡尔树引入笛卡尔树是一种二叉树,每一个节点由一个键值二元组\((k,w)\)构成。要求k满足二叉搜索树的性质,而w满足堆的性质。一个有趣的事实是,如果笛卡尔树的\(k,w\)键值确定,且k互不相同,w互不相同,那么这个笛卡尔树的结构是唯一的。上面这棵笛卡尔树相当于把数组元素当作键值w,......
  • 基环树
    基环树的定义为:一个有向或无向图中,只含有一个环的图,形式化的表达为:关于这种形状关键点主要在于找环,那么我们可以一步一步的去寻找,当这个点走着走着走到了某个环里,我们可以直接遍历整个环,然后打个标记,这样环就找到了具体的例题:E-ReachabilityinFunctionalGraph本题就是一......
  • 基环树找环
    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&......
  • 赛克oj The diameter of a rectangle(笛卡尔树)
    赛氪OJ-专注于算法竞赛的在线评测系统(saikr.com)这题是hduoj1506的加强版,区别在于宽度不是固定为1了,思路差不多,也是使用笛卡尔树。参考hduoj1506(笛卡尔树)-Venux-博客园(cnblogs.com)1#defineIOstd::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)2#definebu......
  • hduoj 1506(笛卡尔树)
    Problem-1506(hdu.edu.cn)题意坐标轴给定一些矩形,紧密排在一起,每个矩形宽度固定为1,问形成的图案中最大可以组成的矩形面积。思路常规思路是可以用单调栈分别找两边的合法边界,这里使用笛卡尔树。笛卡尔树实现了堆的性质,并且对原数组建立的笛卡尔树进行中序遍历为原数组的顺......
  • [NOI2009] 二叉查找树 & 笛卡尔树学习笔记
    这个题:二叉搜索树原理认识+区间dp;只要熟练相关算法就一定可以做出来。但我不行。。。我们学习一下笛卡尔树:什么垃圾东西,不学了。发现这个题是l蓝书上一道题jqb。二叉查找树又有一个性质:二叉查找树的中序遍历是其代表的序列从小到大排序的结果。而无论Treap如何旋转,其都......
  • 笛卡尔树学习笔记
    笛卡尔树引入是一种二叉树,每个节点由一个二元组\((k,w)\)形成。\(k\)满足二叉搜索树的性质,\(w\)满足堆的性质。上面这棵笛卡尔树相当于把数组元素值当作键值\(w\),而把数组下标当作键值\(k\)。显然可以发现,这棵树的键值\(k\)满足二叉搜索树的性质,而键值\(w\)满足小根......
  • 生成带重复的笛卡尔乘积过程 Cartesian Product with Repetition
    目录WhatisCartesianProductwithRepetitionCodeDemoWhatisCartesianProductwithRepetition比如说有两个集合:\(\{1,2,3\}\)\(\{A,B,C\}\)想把他们组合成所有可能组合,比如,1AAA1AAB1AAC...这种组合可以称为"有重复的笛卡尔积"或"带重复的笛卡尔乘积"(Carte......