摘要: 题目大意:给你一个矩阵,问最少要几步将矩阵变为123804765,每次操作可将0与上下左右各个数调换。 思路:这道题深搜深度非常大,广搜分类太多,导致无论深搜还是广搜都会TLE,那么我们应该找一个综合广搜和深搜优点的算法——迭代加深搜索。我们枚举移动几次会到达目标节点,一旦搜到次数大于枚举的数就re 阅读全文
posted @ 2019-07-20 21:37 X_rice 阅读(177) 评论(0) 推荐(1) 编辑
摘要: 题目大意:1、求1条链点权为1的个数,并将路径上所有点权赋0,2、求节点u子树中点权为0的个数,并把子树点权赋1。 思路:一道裸模板,有个小技巧,我们可以在跳链时边跳边把权值赋0,这样既不会影响答案,还能少些几个函数。 而这题我调了2个多小时,在一番对拍下,我终于发现,我树链剖分的模板打错了!!!( 阅读全文
posted @ 2019-07-20 20:37 X_rice 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定一棵树,你有5种操作:1、改变其中一条边的权值,2、将节点u到节点v的所有边权取反,3、求节点u到节点v路径所有边权之和,4、求节点u到节点v路径所有边权最大值,5、求节点u到节点v路径所有边权最小值。 思路:一看题目这么长就知道码量不少qwq,这是一道裸的树链剖分,但有些细节要注意: 阅读全文
posted @ 2019-07-20 19:51 X_rice 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定一个序列a1,a2,……,an,求满足以下要求的最长子序列:1.该序列是严格上升的,即x[i] < x[i+1](1<=i<=k-1),2.任意两个相邻的元素是非互质的,即gcd(x[i],x[i+1])>1(1<=i<=k-1)。(1<=n,a[i]<=105) 思路:我们先将序列排 阅读全文
posted @ 2019-07-20 19:17 X_rice 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给出一棵 n 个结点的树,每个结点有一个颜色 c[i]。 询问 q 次,每次询问以 v 结点为根的子树中,出现次数 ≥k 的颜色有多少种。树的根节点是1。 (1<=c[i],n,m<=100000)。 思路:这是一道树上问题转成序列问题的题目,我们先利用dfs序将树上问题变成序列问题,然后 阅读全文
posted @ 2019-07-20 18:30 X_rice 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 题目大意:你有一棵以1为根的有根树,有n个点,每个节点初始有一个颜色c[i]。 有两种操作:1 v c 将以v为根的子树中所有点颜色更改为c。 2 v 查询以v为根的子树中的节点有多少种不同的颜色。 ( 1<=ci​<=60,1<=n,m<=400000) 思路:因为在树上不方便操作,所以我们要将一 阅读全文
posted @ 2019-07-20 17:54 X_rice 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 点分治用来解决树上距离的问题。 最经典,最模板的一道题:给定一棵树,给定一棵有n个点的树,询问树上距离为k的点对是否存在。 对于上面那个问题,我们可以O(n^2)枚举点对,然后对每个点对跑一遍LCA,复杂度是O(n^2·log(n))的,这显然不能让我们接受。那么,我们的点分治可以解决这类问题:首先 阅读全文
posted @ 2019-05-05 22:47 X_rice 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题目大意:求多棵基环树的直径总和。思路:对于基环树系列的题,最重要的就是找环,其他操作都是基于环的。本题也是如此:一棵基环树的直径有两种情况:1、经过环上两个节点外加他们子树的最深深度,也就是dis(i,j)+dep[i]+dep[j],其中dep代表从根节点开始所能到达的最深节点,dist代表i到 阅读全文
posted @ 2019-05-05 22:42 X_rice 阅读(196) 评论(0) 推荐(0) 编辑