随笔分类 - 图论
摘要:T2:最大值与最小值 众所周知,小葱同学擅长计算,尤其组合数但这个题和组合数什么关系。 给定一张有向图,每个点有点权。试找到一条路径,使得该路径上的点权最大值减去点权最小值最大,问这个差最大是多少。 缩点后在DAG上DP,对每个dcc维护四个信息preMin/preMax/nxtMin/nxtMax
阅读全文
摘要:(题面来自Luogu) 题目描述 奶牛们又一次试图创建一家创业公司,还是没有从过去的经验中吸取教训--牛是可怕的管理者! 为了方便,把奶牛从 1⋯N(1≤N≤100,000) 编号,把公司组织成一棵树,1 号奶牛作为总裁(这棵树的根节点)。除了总裁以外的每头奶牛都有一个单独的上司(它在树上的 “双亲
阅读全文
摘要:(题面来自luogu) 题意翻译 一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和。 ci <= n <= 1e5 裸题。统计时先扫一遍得到出现次数最大值,然后再扫一遍看哪个颜色的出现次数与mxCnt相等。注意用一个bool数组判重,清空轻儿子贡献时要顺
阅读全文
摘要:(题面来自luogu) 题目描述 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K 输入格式 N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 接下来是k N(n<=40
阅读全文
摘要:题意:给出一张含有n(n<20)个点的完全图,求从0号节点到第n-1号节点的最短Hamilton路径。Hamilton路径是指不重不漏地经过每一个点的路径。 算法进阶上的一道状压例题,复杂度为O(n^2 * 2^n),还是蛮恐怖的。 设f[i][j]表示当前经过状态为i,且当前在点j所花费的最小代价
阅读全文
摘要:(题面不是来自Luogu) 题目描述 有一个大小为n且以1为根的树,树上每个点都有对应的颜色ci。现给出m次询问v, k,问以v为根的子树中有多少种颜色至少出现了k次。 输入格式 第一行两个数n,m表示树的大小以及询问的次数。 第二行n个数表示树上每个结点的颜色。 接下来的n-1行,每行两个数a,
阅读全文
摘要:(这题在洛谷主站居然搜不到……还是在百度上偶然看到的) 题目描述 给一棵根为1的树,每次询问子树颜色种类数 输入输出格式 输入格式: 第一行一个整数n,表示树的结点数 接下来n-1行,每行一条边 接下来一行n个数,表示每个结点的颜色c[i] 接下来一个数m,表示询问数 接下来m行表示询问的子树 输出
阅读全文
摘要:(题面来自luogu) 题意翻译 你有一棵以1为根的有根树,有n个点,每个节点初始有一个颜色c[i]。 有两种操作: 1 v c 将以v为根的子树中所有点颜色更改为c 2 v 查询以v为根的子树中的节点有多少种不同的颜色 翻译贡献者UID:28455 n、m <= 4e5,ci <= 60。 今天唯
阅读全文
摘要:(7.17)早就想学点分治了……今天状态不太在线,眯一会写篇笔记来理理思路。 (静态)点分治是一种利用无根树性质暴力分治的思想,可以在O(nlogn)的复杂度下统计可带权树上的路径信息。 像是这道例题,多组询问是否存在长度为k的路径,需要我们预处理出一个储存所有路径长度信息的桶。 点分治的做法,就是
阅读全文
摘要:(以下是luogu题面) 题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 输入输出格式 输入格式: 第一行两个整数N,M。 第二行
阅读全文
摘要:这是一篇迟来的博客,由于我懒得写文章,本篇以两个问题阐述笔者对树链剖分的初步理解。 Q1:树链剖分解决什么问题? 树链剖分,就是把一棵树剖分成若干连续的链,将这些链里的数据映射在线性数组上维护。比方说我们想要维护树上任意两点间的lca,或者支持一段路径或一棵子树的修改和查询,都可以用树链剖分来解决。
阅读全文
摘要:这个题是很经典的生成树问题。第一次接触时对倍增算法的理解还不够透彻,没能打出来正解。 首先,原题中给出的是一幅图,询问从某点出发到另一点“需要经过的最短边的最大值”。用floyd来解决是可以的,但是数据范围不能承受O(n^3)的复杂度。于是我们考虑:假设原图是连通的,那么我们从某点到另一点,一定至少
阅读全文
摘要:树形图的定义:一个有向图,满足从某一点u出发可以遍历全部点,并且图中不存在环(恰有点数-1条边),则称该图为一个树形图,其中u是该图的根。对于一个有向图,如果我们可以在其上生成一个包括原图所有点的树形图T,且满足T的所有边权之和最小,那么T就是原图的一个最小树形图。 从定义上很容易联想到无向图的最小
阅读全文
摘要:我们把“u点能够到达的最大点”转化为反向图中能到达u点的所有点里的最大值,可知缩点后满足无后效性。val[i]的初值设为连通分量i中的最大点。反向存图,tarjan缩点,拓扑序dp即可。 至此luogu上真哥留下的缩点习题全部完成。晚上更新对最小树形图(朱刘算法)的理解。
阅读全文
摘要:tarjan有向图缩点的基础应用。把原图中某点的连通数转化为反向图中”能够到达某点的个数“。缩点后,每个新点的贡献等于 原dcc大小 * f[i] 其中f[i]表示(包括该点自身)通向该点的点的个数。设u点为v的入度,满足转移方程: 所以我们按照拓扑序dp求解即可。f[i]的初值设为该分量的节点数。
阅读全文
摘要:开始学tarjan的时候,有关无向图的割点、桥、点双边双缩点都比较容易地理解了,唯独对有向图的缩点操作不甚明了。通过对luoguP2656_采蘑菇一题的解决,大致搞清了tarjan算法的正确性。 首先放出有向图缩点tarjan函数的写法: } while (x != u); 问题主要出在函数的第二部
阅读全文
摘要:尽管是缩点的习题,思路也是在看了题解后才明白的。 首先,每个强连通分量内的点都是一定互通的,也就是可以完全把这里面的边都跑满,摘掉所有能摘的蘑菇。那么,考虑给每一个强连通分量化为的新点一个点权,代表摘光蘑菇能拿到的边权之和。然后,在新点之间保留原来的桥及其初始权值。(每一个桥一定只能跑一遍,否则说明
阅读全文
摘要:这个题一开始想法偏了,看了题解才搞明白的。 考虑对于每个vdcc(点双联通分量),如果不与任何一个割点相连,就至少要在块内预留两个逃生出口作为双保险。而如果与且仅与某一个割点相连的话,只要在块内建造一个点,就可以同时防范割点塌掉/逃生点塌掉的情况。而只要与两个及以上的割点相连,无论哪边塌掉,都可以从
阅读全文
摘要:上午开了图论的基础知识,下周一(据说)真哥将对链式前向星作深入讲解,因此今天根据上午的介绍,稍作预习整理。 所谓前向星,指的是一种特殊数组,用以存储各节点的连边信息。大致原理是在(vector可能舒服些)数组中加入各边的起点、终点和长度三个信息,最终进行一次sort,令起点编号较小的靠前,同起点的边
阅读全文

浙公网安备 33010602011771号