摘要:
a^b,假如a和b分别是10000000 10000000,我们知道计算机是无法存储这样大的数的。看来直接计算,然后取前N位和后N位,是不可能的了。先来看后N位如何计算,假设N==3。那么不管a实际上有多大,我们的计算结果实际上只和a的后3位有关,也就是说第四位开始对我们的答案是没有影响的,能理解么?所以我们先让a对1000取模,然后利用快速幂算法求出a^b次方,过程中别忘记了对1000取模。再来看前N位如何计算,同样假设N==3.假设a^b==c。那么我们对c取一个log10,得到d。d肯定是一个浮点数,我们先看d的整数部分,10^(d的整数部分)等于100000....(d个0),好了,注 阅读全文
摘要:
题意:给你一个集合,集合里没有重复元素。集合可以添加元素,也可以删除元素(前提是集合里有),另外还有一个询问操作,问集合里最小的差值是多少(只有一个元素的时候询问无效)例如,集合开始的时候有1 7两个元素,那么最小差值就是6。当再添加一个新的元素3,集合就变成了1 3 7,那么最小差值就是2。解法:对于每一个区间线段,我们给它3个属性,最小值minf,最大值maxf,以及最小差值deff。从下而上,我们很容易可以看出,某一个线段 i 的最小值为min(left_child[i].minf,right_child[i].minf) 最大值... 阅读全文