上一页 1 2 3 4 5 6 7 8 9 10 ··· 16 下一页
摘要: 题意 给定两棵有根树,两棵树均有​n个节点,且根均为​1号点。 问有多少对​(u,v)满足:在给定的两棵树中u均为v的祖先。 思路 本题即求对于所有节点x,两棵树中公共的儿子数量之和。 对于第一颗树,求出其dfs序,然后遍历第二棵树,每达到一个节点,查询该节点的值,表示这个节点同时被两棵树的一些节点 阅读全文
posted @ 2019-09-20 23:30 Ilverene 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 题意 当给定一个序列 a[0],a[1],a[2],...,a[n 1]和一个整数 K 时,我们想找出,有多少子序列满足这么一个条件:把当前子序列里面的所有元素乘起来恰好等于K。 思路 比较裸的背包,将k质因数分解即可。 代码 cpp include using namespace std; nam 阅读全文
posted @ 2019-09-20 23:23 Ilverene 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 题意 有一棵树,从给定的节点出发,遍历所有节点,不要求路径不重叠。要求每一次前往的点与当前点的路径上没有访问过的节点数量最多,若有多个这样的节点,优先取字典序最小的。求遍历顺序。 思路 将出发节点设为树的根节点,dfs一遍,统计根节点到每个叶节点路径上的节点数量。(显然每一次路径的终点都是一个叶节点 阅读全文
posted @ 2019-09-20 23:21 Ilverene 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题意 给定一个圈以及若干区间,希望覆盖整个圈。对于每个区间,求出必须选这个区间前提下的区间最少选取数。保证区间之间没有包含关系。 思路 可以把我们要选的区间想象成一个链(就是那种一环套一环的锁链),那么我们在将这个链拉紧的时候肯定是利用率最高,即长度最大的。 回到题目,我们对区间左端点排序,然后每次 阅读全文
posted @ 2019-09-18 22:17 Ilverene 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 题意 给定一个序列,定义和弦为长度在[L,R]上的连续元素集,其值为元素和。求最大的前k个和弦值之和。 思路 暴力思路是显然的:枚举左端点,然后依次枚举右端点得到最大值。 考虑优化:对于每一个左端点,能得到的最大值应该为$$max{sum[j]} sum[chosen_point]$$ 求最大值的过 阅读全文
posted @ 2019-09-15 11:12 Ilverene 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 简介 kruskal重构树是对kruskal算法的拓展,可以看为一种特殊的数据结构。 实践中可以解决一系列涉及可达点的问题。(这话讲了估计也看不懂) 实现思路 在kruskal算法的流程中,当我们将两个点连接在一起时,不进行直接的连接,而是新建一个节点,然后分别连上。 我们将这个节点的点权设为原先两 阅读全文
posted @ 2019-09-10 22:42 Ilverene 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题意 给定一颗有点权以及边权树以及若干询问,每次求从给定节点出发经过长度均不超过k的边能达到的点中,第k高的点的点权。 思路 看到对边长度的限制,没有思路。 提高知识水平之后发现有所谓kruskal重构树这一操作。(提高关键词敏感度) kruskal重构树的原理及实现细节放到另一篇文章里面写,这里默 阅读全文
posted @ 2019-09-09 21:48 Ilverene 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 简介 启发式合并本质上是一种优化的暴力,可用于拥有稳定结构的数据结构。 实现思路 考虑 "梦幻布丁「HNOI2009」" 。 显然的暴力思路是用链表维护每种颜色的位置,然后每次修改的时候暴力合并两条链。 不难证明,这样的最坏时间复杂度将达到$O(n^2)$,不能接受。 可以观察到,合并的时间复杂度只 阅读全文
posted @ 2019-09-07 22:28 Ilverene 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 题意 给定一个有多种颜色组成的序列,以及两种操作: 1. 将某种颜色全部染成另一种颜色。 2. 询问颜色段的数量。 思路 将每一种颜色的位置分别存入链表,然后染色的时候启发式合并。 这道题数据出的比较毒瘤,有同种颜色互相染色的数据,还有将已经不存在的颜色进行染色的数据,需要特判。 代码 阅读全文
posted @ 2019-09-07 22:11 Ilverene 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题意 有一个森林,初始有一定的边。给定两种操作: 1. 查询两点路径上k小值。 2. 联通两点。 强制在线。 思路 维护主席树,合并的时候按照子树大小dfs暴力合。 代码 学校OJ AC BZOJ MLE Luogu MLE (然而学校OJ空间限制比洛谷小一半???) cpp include usi 阅读全文
posted @ 2019-09-07 16:24 Ilverene 阅读(197) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 16 下一页