摘要: 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4016题意:从给出的N个数中,选出K个数进行与运算,求出最小值一看到这题目,哎,就知道暴力是绝对超时的,可是之后,就没之后……………………看了网上的思路,这剪枝太有技巧了,orz思路如下:1.从当前值开始,如果选上剩下的所有,也不能小于已得最优值的话,返回。2.最优值不用等到累积选到k数才更新,而是不断更新,因为与运算结果比原来两个都小,所以这也是一个剪枝。3.预处理,从小到大排序,可想而知,先选小的,得到的最优值更接近于结果,是个强剪枝,没有这个2900ms+,加上600ms+。太强大了原文的链接 阅读全文
posted @ 2011-09-14 22:59 枕边梦 阅读(497) 评论(0) 推荐(0) 编辑
摘要: 题意:将题目的背景去掉,简单的说,就是每一次对一个区间的所有值都分别做一次求平方根的运算,就是将那个值改为它的平方根的值,每次再询问一段区间内的总和分析:很明显的用线段树来做,不过明显的对线段树还是不熟悉,一开始将每一步update操作都更新到具体的每一个点了,没有任何技巧,直接TLE;很明显,如果每一步都必须更新的具体每一个点的话,就是一个O(n)复杂度的操作了,这个对使用线段树来说,没太大意义了。这题目而言,我们发现,任何一个2^63次方以内的数,开根号都至多开八次,也就是,多次询问操作之后,很多都已经不需要update了,所以,只需要在每一个节点中增加一个域,用来标记该区间是否已经全部更 阅读全文
posted @ 2011-09-14 20:49 枕边梦 阅读(275) 评论(0) 推荐(0) 编辑