上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 30 下一页
摘要: 题意:现在有一个点堆, 一开始先给你m个点,然后再用题目中的rand函数生成剩下的n个点,问在这个点堆中可以找到的最长严格递增序列的长度是多少。 题解: 很常见的一个3维CDQ。 先按照z轴 sort 一遍,然后对于当前的序列去cdq分治。对于CDQ的每一层来说,都是用左边的点的值去更新右边点的值, 阅读全文
posted @ 2018-10-22 13:43 Schenker 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题解: 对整个修改的区间进行分治。对于当前修改区间来说,我们对整幅图中将要修改的边权都先改成-inf,跑一遍最小生成树,然后对于一条树边并且他的权值不为-inf,那么这条边一定就是树边了。然后我们把这些点都缩成一个点。然后,我们继续对当前修改区间来说,我们把要修改的边的边权都修改成inf 阅读全文
posted @ 2018-10-15 16:11 Schenker 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题解:现在需要维护的每次的询问矩形和前面插入的所有矩形有公共部分的个数。 我们试着直接去维护这个东西, 发现可能的情况太多,不好维护,所以我们维护每次询问的时候在当前矩阵个数下,有多少个矩阵是一定在外面的。对于一个矩阵来说, 我们只需要统计到目前位置, 多少个矩形的下底线 在询问矩形的上 阅读全文
posted @ 2018-10-11 15:43 Schenker 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题意:现在有一棵树,每条边的长度都为1,然后有一个权值,求存在多少个(u,v)点对,他们的路劲长度 <= l, 总权重 <= w. 题解: 1.找到树的重心。 2.求出每个点到中心的长度和权值。 3.对所有点都询问出合法点的个数(包括同一颗子树)加到答案上。 4.对于每一棵子树内部都找到 阅读全文
posted @ 2018-10-09 18:18 Schenker 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题意:给你一颗树,问你有多少个点对满足他们的距离恰好为k。 题解: 很裸的一个点分治。 1.找到重心。 2.对每一棵子树中的每一个点,都直接询问k-deep的个数,加到答案里,每次处理对一棵子树询问完之后,把这个树的每个节点的深度加到deep的个数里。 3.对个数清0,然后处理每一棵子树 阅读全文
posted @ 2018-10-09 18:06 Schenker 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题意:给你一个序列,长度为n,m次询问,询问一段区间的第k大。 题解:CDQ分治,对整个值域进行分治。每次取一个mid, 计算出整个区间内mid <= 的数目,如果 num >= k, 那么就可以第k大的数一定落在[ l, mid]之间, 否者就会落在 [mid+1, r]之间, 然后我 阅读全文
posted @ 2018-10-07 10:41 Schenker 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题意:现在有3种操作, 1 t x 在t秒往multiset里面插入一个x 2 t x 在t秒从multiset里面删除一个x 3 t x 在t秒查询multiset里面有多少x 事情是按照输入顺序发生的,这个人有一个时光机,可以穿梭到那一秒去执行操作。 题解:CDQ分治。3维偏序,第一 阅读全文
posted @ 2018-10-06 16:54 Schenker 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 园丁的烦恼 题解:如果 x 和 y 足够小的话, 我们就可以用2维树状数组去单点修改,区间查询去计算答案。但是现在 x 和 y 都足够大, 我们没办法去这样操作。 现在我们转换思路,按 x 为第一权重, y 为第二权重去排序, 这样我们就可以只用一颗树状数组去维护 x到当前为止y的数目。 然后对于查 阅读全文
posted @ 2018-10-05 16:51 Schenker 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 先来看这样一道题目 给你N个点,M条双向边,要求求出1号点到其他所有点的距离。其中 2 <= N <= 1e5, 1 <=M <= 1e6. 对于这样的一道题目 我们当然不可能开一个数组edge[N][N]来记录边的信息,根本不可能开的下。 假如开下了也会有很多边为-1,浪费了很多空间。 所以可以对 阅读全文
posted @ 2018-10-04 09:26 Schenker 阅读(555) 评论(0) 推荐(0) 编辑
摘要: dijkstra算法 是一种单源点最短路算法求出一个点到其他所有点的最短路。 给你这样的一个图,需要求出1号点到其他点的最短距离是多少。 首先我们开一个数组 d[N],d[x] 代表着从起点出发到x点的距离是多少。 开一个数组vis[N], vis[x]数组代表着某个点d[x]是不是成为定值,不会再 阅读全文
posted @ 2018-10-04 00:57 Schenker 阅读(657) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 30 下一页