摘要:
这种双循环的优化问题碰到过很多了。层出不穷。 但无非就是要利用前面循环时,所产生的信息,从而减少计算。可以注意到log其实是不超过40的, 那么以这方面入手,时间复杂度就可以降为nlognlog=4的区间肯定是log=1的区间加元素而来的,肯定是log=2的区间加元素而来的,肯定是log=3的区间加... 阅读全文
摘要:
并查集专题训练地址,注册登录了才能看到题目并查集是一个树形的数据结构, 可以用来处理集合的问题, 也可以用来维护动态连通性,或者元素之间关系的传递(关系必须具有传递性才能有并查集来维护,因为并查集有压缩路径)。用并查集来维护元素之间关系的传递, 那么元素与元素之间就有一个权值(带权并查集),那么当路... 阅读全文
摘要:
生成树专题地址uvalive3887给定一个带权的无向图,求得一棵最小生成树,是的树中的最大边权-最小边权的差值最小分析:当确定一个最小边时(其他的边的权值都比他大),那么之后按照kruskal算法得到的最小生成树,此时得到的最小生成树的最大权值也肯定是最小的,因为是kruskal是按照贪心来选边的... 阅读全文
摘要:
回路性质:如果C是图G上的任意回路, e是回路上权值最大的边, 那么生成树肯定不包含e, 因为选其他的边,明显更优增量最小生树, 有m条边,每次加入一条边,如果能形成树,求出最小的生成树,思路: 如果暴力求解,那么要求m遍最小生成树, 时间复杂度是 m*m*logm 那么根据回路性质, 一棵树加... 阅读全文
摘要:
uvaLive5713修建道路使得n个点任意两点之间都可以连通,每个点有都有一定的人口,现在可以免费修一条道路,A是免费修的道路两端结点的人口之和, B的其它不是免费修道路的长度的总和要求的是A/B的最短值。B其实就是最小生成树删除一条边只有的权值之和B。 只要我们知道生成树上任意两点之间的最长边,... 阅读全文
摘要:
将无向图变为点-双连通的图 定义:点-双连通指的是任意两个之间存在至少两条点不重复的路径 分为两种情况, 一种是连通图,一种是非连通图 ①连通图 首先,找出图中的所有点-双连通分量,然后将该分支缩成一个点, 因为双连通分量内部肯定不用考虑的。 只需要考虑双连通分量与外部的其它结点... 阅读全文
摘要:
一直不明白为什么概率是正推,期望是逆推。 现在题目做多了,慢慢好像有点明白了poj2096收集bug, 有n个种类的bug,和s个子系统。 每找到一个bug需要一天。要我我们求找到n个种类的bug,且在每个系统中都找到一个bug的期望天数设dp[i][j] 为找到i个种类的bug和在j个系统中找到b... 阅读全文
摘要:
划分树是保存了快速排序的过程的树,可以用来求静态第k小的数如果,划分树可以看做是线段树,它的左孩子保存了mid-L+1 个 小于等于 a[mid] 的数字, 右孩子保存了 R-mid个大于等于a[mid]的数字 数组a是排序过后的数组,而划分树保存的是原数组的数据,划分树的构造就是将上一层[l,r... 阅读全文
摘要:
可持久化数据结构介绍可持久化数据结构是保存数据结构修改的每一个历史版本,新版本与旧版本相比,修改了某个区域,但是大多数的区域是没有改变的,所以可以将新版本相对于旧版本未修改的区域指向旧版本的该区域,这样就节省了大量的空间,使得可持久化数据结构的实现成为了可能。如下图,就是可持久化链表插入前插入后尽可... 阅读全文
摘要:
给定ai,bi, ci 表示区间[ai,bi]内至少有ci个点, 要求对于所有给定的ai,bi,ci, 至少多少个点才能满足题目的条件重做这一题学到的一点是, 可以设变量来表示一些东西,然后才能找出约束的条件, s[i]表示区间0到i内有多少个点, 那么s[bi] - s[ai-1] >= ci 就... 阅读全文