题意:
给出三种操作,
0 在容器中插入一个数。
1 在容器中删除一个数。
2 求出容器中大于a的第k大元素。
思路:可以用树状数组和线段树,显然a[1]+...+a[i]随i有明显的单调性,所以可以二分出答案
线段树时间复杂度比树状数组的常数大了几倍...所以线段树擦边过了
还有另外一种思路:二分只是二分出a[1]+...+a[i]的上界i,所以可以逆向考虑,从a[1]开始累加...
分类:
其他好文 时间:
2015-02-26 10:04:29
阅读次数:
220
首先讲一下判断哈希算法好坏的三个原则1、平衡性(Balance):是指 hash的结果应该平均分配到各个节点, 这样从算法上就解决了负载均衡问题.2、单调性(Monotonicity):在新增或者删减节点时, 同一个key访问到的值总是一样的.3、分散性(Spread):在分布式环境中,数据应该分散...
分类:
编程语言 时间:
2015-02-17 16:30:00
阅读次数:
260
Description对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 s[i](g具有单调性),之后f[i]=i+1,g[i+1]=s[i],len=max(len,i+1)。最后输出长度为a序列时,我们可以从前往后扫。1 int cur...
分类:
其他好文 时间:
2015-02-16 12:55:50
阅读次数:
132
1)求函数f(x)的所有驻点和不可导点;f(x)的一阶导等于0 的点和不可导的点;2)如果f(x)的二阶导,在驻点处大于0,则为极小值,如果小于0为极大值,等于0则需要根据驻点附近的一阶导符号转换来确定极大值,极小值,或者不是极值;3)一阶导可以确定函数的单调性,一阶导大于0,单调递增,一阶导小于0则为单调递减;4)二阶导可以确定函数的图形形状,二阶导小于0为凸形,二阶导大于0为凹型;...
分类:
其他好文 时间:
2015-02-03 09:33:00
阅读次数:
188
题解:O(n*n)
首先我们先外圈枚举一个最小权值一
然后内圈再枚举一个最小权值二
然后每次外圈枚举完了就重置一下双指针,
每次内圈枚举的时候右指针右移把总条件符合的加进去,其中第二个权值符合枚举条件的计数。
然后左指针右移把第一个权值不符合的清出去,其中第而个权值符合枚举条件的计数。
因为单调性问题,所以不会有l>r 的情况(第一权值不符合的在右指针右移时,第...
分类:
其他好文 时间:
2015-02-02 14:15:27
阅读次数:
159
题目:最近点对。
分析:分治。UVa 10245类似物,这里要优化一下计算两个区间各取一点的情况,提高效率。
在计算两个集合各取一点定位情况同水平方向一样,将点按竖直方向排序,利用单调性;
减少计算次数可以提高效率。
说明:UVa和uhunt不好上( ⊙ o ⊙ )啊!
#include
#include
#include
#incl...
分类:
其他好文 时间:
2015-01-31 18:05:41
阅读次数:
156
题目大意:给出一个字符串,给出一些询问,每次问几个后缀两两之间的LCP之和。
思路:保证Σask数量级在O(n)上,可以考虑一下虚树了。建立虚树之后,这题就和差异那个题一样了。但是必须要打时间戳啊,要不死的很惨的啊。。
CODE:
#include
#include
#include
#include
#define MAX 1000010
using names...
分类:
其他好文 时间:
2015-01-19 19:12:37
阅读次数:
151
题目大意:给出一棵树,每次询问一些节点,当把这些节点连接起来,使得每两个询问的点之间有一条边,共有k*(k - 1)条边。问这些边中,长度的总和是多少,最短的一条边是多少,最长的一条边是多少。保证询问的点的总数是O(n)级别。
思路:利用LCA单调性,每次询问的时候重新建树,在这棵树上做DP,使得总体时间复杂度降到O(nlogn)。
树形DP我写的都要麻烦死了。。听了正解之后简直想吐血...
分类:
其他好文 时间:
2015-01-09 17:34:40
阅读次数:
274
题解:
首先我们考虑每次都做一遍树形DP(树形DP自己脑补去,随便乱搞就过了)。
显然这是TLE无疑的。
所以可以利用LCA单调性构建虚树。
思想:
我们发现每次树形DP有很多点用不到,但是却需要被扫过,让他们见鬼去吧!
实现:
我们只对每次扫的图插入本次询问需要的节点,以及它们的LCA。
这样询问了m个点,虚树就至多只需要2m个点(so quick)。
而插入顺...
分类:
其他好文 时间:
2015-01-09 17:30:49
阅读次数:
165
题目大意:给出一棵有根树,n组询问,每一组询问给出树上的一些关键点,问割掉一些边使得根与这些点不联通的最小花费是多少。总询问的点不超过O(n)。
思路:基础思路是每一次询问做一次O(n)的DP,这本来已经够快了,但是有很多询问,这样做就n^2了。注意到所有询问的点加起来不超过O(n),也就是说每次询问的点可能很少。那么我们为何要将所有点扫一次?只需要将询问的点重新建树,然后跑树形DP,这...
分类:
其他好文 时间:
2015-01-08 09:40:04
阅读次数:
480