随笔分类 -  数据结构

摘要:题目链接 Strip 题意 把一个数列分成连续的$k$段,要求满足每一段内的元素最大值和最小值的差值不超过$s$, 同时每一段内的元素个数要大于等于$l$, 求$k$的最小值。 考虑$DP$ 设$dp[i]$为前$i$个数字能划分成区间个数的最小值。 则$dp[i] = min(dp[j] + 1) 阅读全文
posted @ 2017-09-13 16:23 cxhscst2 阅读(346) 评论(0) 推荐(0)
摘要:题目链接 Hihocoder 1561 首先对原图求$MST$ 我们发现某条边成为某两个点的关键路径的必要条件是这条边是最小生成树的树边。 所以我们求$MST$的同时进行启发式合并。 把$size$小的子树合并到$size$大的子树当中就可以了。 接下来是处理询问。 对于一条边,如果他不是最小生成树 阅读全文
posted @ 2017-09-12 14:48 cxhscst2 阅读(271) 评论(0) 推荐(0)
摘要:题目链接 HH的项链 这道题可以直接上主席树的模板 当然用莫队算法也是可以做的 阅读全文
posted @ 2017-09-02 17:51 cxhscst2 阅读(327) 评论(0) 推荐(0)
摘要:题目链接 Drazil and Park 中文题面 传送门 如果他选择了x和y,那么他消耗的能量为dx + dx + 1 + ... + dy - 1 + 2 * (hx + hy). 把这个式子写成这个形式 (d1 + d2 + ... + dy - 1 + 2 * hy) + (2 * hx - 阅读全文
posted @ 2017-08-23 15:39 cxhscst2 阅读(293) 评论(0) 推荐(0)
摘要:题目链接 楼房重建 解题思路:我们可以把楼房的最高点的斜率计算出来。那么问题就转化成了实时查询x的个数,满足数列x的左边没有大于等于x的数。 我们可以用线段树维护 设t[i]为如果只看这个区间,可以看到的楼房数量有多少。 f[i]为这个区间的x的最大值 更新的时候我们递归讨论。 计算t[i]时,区间 阅读全文
posted @ 2017-08-16 15:14 cxhscst2 阅读(169) 评论(0) 推荐(0)
摘要:题目链接 The Bakery 题目大意:目标是把$n$个数分成$k$组,每个组的值为这个组内不同的数的个数,求$k$个组的值的和的最大值。 题目分析: 这道题我的解法可能和大众解法不太一样……我用主席树求$ask(l, r)$——$l$到$r$之间有多少个不同的数。 然后就是$DP$了。 这道题的 阅读全文
posted @ 2017-08-14 21:47 cxhscst2 阅读(299) 评论(0) 推荐(0)
摘要:题目链接 pog loves szh III 题意就是 求一个区间所有点的$LCA$。 我们把$1$到$n$的$DFS$序全部求出来……然后设$i$的$DFS$序为$c[i]$,$pc[i]$为$c[i]$的反函数。 区间的$LCA$其实就是,$DFS$序最大和最小的两个点的$LCA$。 (话说$2 阅读全文
posted @ 2017-08-01 20:34 cxhscst2 阅读(273) 评论(0) 推荐(0)
摘要:题目链接 Paths on the tree 来源 2014 多校联合训练第5场 Problem B 题意就是给出m条树上的路径,让你求出可以同时选择的互不相交的路径最大数目。 我们先求出每一条路径(u, v)中u和v的LCA:w,按照路径的w的深度大小deep[w]对所有的路径排序。 deep[w 阅读全文
posted @ 2017-07-31 16:44 cxhscst2 阅读(378) 评论(1) 推荐(0)
摘要:题目链接 UCloud 的安全秘钥 对于简单的版本,我们直接枚举每个子序列,然后sort一下判断是否完全一样即可。 对于中等版本,这个时候不能在判断两个序列是否相似上面花太多的条件。 这个时候就想到了Hash 对$1$到$n$的每一个数,随机一个权值。 两个序列相似则有这两个序列的每个元素的Hash 阅读全文
posted @ 2017-07-23 23:50 cxhscst2 阅读(231) 评论(0) 推荐(0)
摘要:题目链接 Treeland Tour 题目就是让你求树上LIS 先离散化,然后再线段树上操作。一些细节需要注意一下。 阅读全文
posted @ 2017-07-21 22:12 cxhscst2 阅读(507) 评论(0) 推荐(0)
摘要:题目链接 字母树 (以每个点为根遍历,插入到trie中,统计答案即可)——SamZhang 阅读全文
posted @ 2017-07-17 22:07 cxhscst2 阅读(282) 评论(0) 推荐(0)
摘要:题目链接 Free tour II 题意:有$N$个顶点的树,节点间有权值, 节点分为黑点和白点。 找一条最长路径使得 路径上黑点数量不超过K个 这是树的点分治比较基本的题,涉及树上启发式合并……仰望了黄学长的博客之后稍微有点明白了(还没有很深入地理解) 阅读全文
posted @ 2017-07-17 21:49 cxhscst2 阅读(216) 评论(0) 推荐(0)
摘要:题目链接 BZOJ2243 树链剖分 $+$ 线段树 线段树每个节点维护$lc$, $rc$, $s$ $lc$代表该区间的最左端的颜色,$rc$代表该区间的最右端的颜色 $s$代表该区间的所有连续颜色段数(仅考虑该区间) $lazy$表示延迟信息。 阅读全文
posted @ 2017-07-13 14:20 cxhscst2 阅读(203) 评论(0) 推荐(0)
摘要:题目链接 微软大楼设计方案 中文题就不说题意了~ 首先是简单版本 满足$1 <= n, m <= 50$ 那么设$c[i][j]$为从第$i$幢楼到第$j$幢楼的最低的那幢楼的高度 计算两个点之间的距离的时候,若两个点分别在第$i$列,第$j$列,那么要根据$c[i][j]$来计算。 暴力即可 再是 阅读全文
posted @ 2017-07-06 15:42 cxhscst2 阅读(197) 评论(0) 推荐(0)
摘要:题目链接 Tree Requests 阅读全文
posted @ 2017-05-02 22:23 cxhscst2 阅读(463) 评论(0) 推荐(0)
摘要:题目链接 Blood Cousins Return 阅读全文
posted @ 2017-05-02 21:52 cxhscst2 阅读(457) 评论(0) 推荐(0)
摘要:题目链接 Lomsat gelral 占坑……等深入理解了再来补题解…… 阅读全文
posted @ 2017-05-02 21:42 cxhscst2 阅读(321) 评论(0) 推荐(0)
摘要:题目链接 New Year Tree 考虑到$ck <= 60$,那么用位运算统计颜色种数 对于每个点,重新标号并算出他对应的进和出的时间,然后区间更新+查询。 用线段树来维护。 阅读全文
posted @ 2017-05-02 21:37 cxhscst2 阅读(235) 评论(0) 推荐(0)
摘要:题目链接 Connections between cities LCA的模板题啦。 阅读全文
posted @ 2017-05-02 21:27 cxhscst2 阅读(137) 评论(0) 推荐(0)
摘要:PS:树链剖分的很基本的题 阅读全文
posted @ 2017-05-02 21:20 cxhscst2 阅读(162) 评论(0) 推荐(0)