求详细解题吧过程

看上述博客如何求第k大的数时被其第二份代码影响,感觉很巧妙于是研究了一下,搞懂后顿时神清气爽啊。

还是看这张经典的图吧,知识在图上就变得形象多了

 現在假设要求sum[a]的值一般我们都是从后往前求和,如a=15

现在我们可以这样来求从不超过15的只有一个1的最大二进制数开始,也可以理解为指數从log(15)取整开始即3,2的3次等于8,依次加上2的2次2的1次,2的0次数字依次为8,12,14,15也就是把普通的求和过程反向。

好了方向求和有什么好处呢?

在求第k大的数的时候就派上用场了虽然还有很多其他方法可以解决第k大的数,但树状数组无疑是最优雅的方法了

下面就以poj 2418这一题来简單说一下怎么求第k大的数

由于树状数组记录的是比当前元素小的数的个数所以可以先把求第k大的数转换为求第num-k+1小的数,num是总的数的个数

 
 
 

恏像还可以用平衡树线段树等来做,改天再补上

treap写法:比树状数组还快

}

这种题目你需要什麼详细过程? 切線垂直於y=-x+2,根据斜率关系可知切线的斜率k=1,所以你要找抛物线上某个点,在这点的切线斜率是1 斜率就是导数,y=ax2+bx+c导数y'=2ax+b,把y'=1代进去,解得x=(1-b)/2a 再把x的值代入抛物線中,得到y的值.

}

我要回帖

更多关于 解题过程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信