传送门 一看到第k大就肯定要想到什么权值线段树,主席树,平衡树之类的 然后就简单了 用并查集判断连通,每个节点建立一颗权值线段树,连通的时候直接合并即可 查询时再二分递归地查找 时间复杂度好像不是很稳定。。。但hzwer都用这种方法水过。。 正解好像是平衡树+启发式合并,以后学TT ...
分类:
其他好文 时间:
2017-09-13 22:04:41
阅读次数:
126
2733: [HNOI2012]永无乡 Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛。如果从岛 a 出发经过若干座(含 0 ...
分类:
其他好文 时间:
2017-08-12 20:25:21
阅读次数:
208
这题之前写过线段树合并,今天复习Splay的时候想起这题,打算写一次Splay+启发式合并。 好爽!!! 写了长长的代码(其实也不长),只凭着下午的一点记忆(没背板子。。。),调了好久好久,过了样例,submit,1A! 哇真的舒服 调试输出懒得删了QwQ #include<iostream> #i ...
分类:
其他好文 时间:
2017-06-30 01:11:26
阅读次数:
300
题目大意:给你一些点,修改是在在两个点之间连一条无向边,查询时求某个点能走到的点中重要度第k大的点。题目中给定的是每个节点的排名,所以实际上是求第k小;题目求的是编号,不是重要度的排名。我一开始差点被这坑了。 网址:http://www.lydsy.com/JudgeOnline/problem.p ...
分类:
其他好文 时间:
2017-05-29 22:22:16
阅读次数:
357
用并查集记录每个联通块的根节点,每个联通块建一棵线段树,合并时合并线段树就可以了。 代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define N 100010 6 ...
分类:
其他好文 时间:
2017-03-04 10:42:47
阅读次数:
206
题意:支持合并,求块内K小数 对于 100%的数据 n≤100000,m≤n,q≤300000 思路:对于每一个块建立一棵动态开点的线段树,暴力(启发式?)合并后二分下就行了 merge用函数的方式写因为懒得讨论x,y其中一个为0的情况,反正是把节点y并到x上 为什么这么暴力都不T?大概是因为随机数 ...
分类:
其他好文 时间:
2017-02-25 13:37:03
阅读次数:
179
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作。 本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作。 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注 ...
分类:
其他好文 时间:
2017-01-16 09:53:24
阅读次数:
175
bzoj2733[HNOI2012]永无乡 题意: n个节点,每个节点有个权值,初始时有m次连通两点的操作,接下来有q次操作,每次可以连通两个点或求某个点所在连通块权值第k小的节点编号。n,m≤100000,q≤300000 题解: treap启发式合并,就是暴力将小的树拆了插到大的树里,均摊复杂度 ...
分类:
其他好文 时间:
2016-08-17 00:03:26
阅读次数:
157
Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛。如果从岛 a 出发经过若干座(含 0 座)桥可以到达岛 b,则称岛 a 和岛 ...
分类:
其他好文 时间:
2016-06-28 00:41:08
阅读次数:
218
写了线段树合并。。具体合并姿势和可并堆基本一样。。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 const int maxn=10 ...
分类:
其他好文 时间:
2016-06-18 23:49:19
阅读次数:
257