将序列分块,每块sqrt(n)个。
在每个块中维护f[i],to[i]
f[i] 表示跳几次可以跳出所在块
to[i] 表示跳出所在块后到达的位置。
在查询时,我们O(sqrt(n))的时间进行“整块”的模拟,可以得到结果。...
分类:
其他好文 时间:
2015-08-03 22:41:29
阅读次数:
189
题目大意:有t(1<=t<=1041<= t <= 10^4)个数arr[1],arr[2]….arr[t],设每个数是n(2<=n<=1092 <= n <= 10^9),任务是将这个n的质因子分解出来,包括重复的质因子,时限是1000MS。。比如n=18,而18=2*3*3,所以输出的结果就是2 3 3。n的范围是[2,109][2,10^9],很容易想到n的质因子的范围是[2,sqrt(n)]...
分类:
其他好文 时间:
2015-08-02 15:16:27
阅读次数:
139
Question
Implement int sqrt(int x).
Compute and return the square root of x.
My Solution
class Solution {
public:
int mySqrt(int x) {
/**
* binary search a from [0, x], where a^2 = x....
分类:
其他好文 时间:
2015-08-01 22:06:03
阅读次数:
87
Implementint sqrt(int x).Compute and return the square root ofx.思路: 突然发现,二分真TM的是万能的。还有牛顿迭代法,数学的东西,头疼不想看了。还有传说中的“魔数”法,比math库效率都高,试了下RE - -。C++: 1 clas....
分类:
其他好文 时间:
2015-08-01 17:01:10
阅读次数:
128
??
题意: 面上n个点,某点到其他点的曼哈顿距离最小和,切比雪夫距离最小和。
思路:对于切比雪夫距离可以转化为哈密顿距离,方法是将每个点的坐标逆时针旋转45度然后放大sqrt(2)倍,换成坐标表示也就是(x,y)->(x-y,x+y).
对于第一个问题,求曼哈顿距离最小和,也就是sum(xj-xi)+sum(yj-yi)。
如果直接求时间复杂度无法承受。
所以我们可以先对x排序,对于从...
分类:
其他好文 时间:
2015-07-31 20:25:12
阅读次数:
156
D - 平方根大搜索 Time Limit:5000MS Memory Limit:131072KB 64bit IO Format:%lld & %lluSubmit Status Practice CSU 1114Description在二进制中,2的算术平方根,即sqrt(2),是一个无限小数...
分类:
其他好文 时间:
2015-07-30 18:58:57
阅读次数:
158
对于两个操作,对于操作1,每次储存要修改的点,直到存了sqrt(m)个点的时候进行更新,并将图重建一次(重新记录每个点到最近染色点的距离)
对于操作2,利用LCA求现在存着的点(也就是还没有更新到图上的点)和这个点的距离的最小值以及这个点在当前图中和最近的染色的那个点的距离。
话说LCA真是个好东西= =!这几天补一补去
题解在这里:http://codeforces.com/blog/e...
分类:
其他好文 时间:
2015-07-29 21:27:32
阅读次数:
142
求满足n=i*j+i+j(0<i<=j)的i、j的种数。
第一种方法:首先这个等式可以化成(n+1)=(i+1)*(j+1),所以只要求出(n+1)的约数的种数即可。同时注意到i与j呈负相关,同时i小于等于j,所以只需要从2到sqrt(n+1)枚举(从2开始是因为i最小为1,我们枚举的是(i+1))。但是,好暴力啊。所以我们可以用筛法先保存1e5以内的素数,再通过质因子分解求出约数数量。
第二种方法:观察等式n=i*j+i+j,可以转化成n-i=(i+1)*j,发现暴力枚举i,判断(n-i)%(n+1)==...
分类:
其他好文 时间:
2015-07-29 01:03:37
阅读次数:
140
题意:有n个点,找一条直线,让所有点都在直线的同一侧(也可在直线上),且到直线的距离之和最小。输出距离和与点数的比值。
题解:所有点在直线同侧,也就是直线不能穿过凸包,那么凸包的边所在直线就是可能的解,点(x0,y0)到直线(Ax + By + C = 0)的距离
dis = |Ax0 + By0 + C| / sqrt(A^2 + B^2)
把凸包的每个边拿去计算,所有点到其的距离和,根据计...
分类:
其他好文 时间:
2015-07-28 18:53:38
阅读次数:
93
题意:
给一个区间边界值很大的区间,但是区间大小较小,求出该区间内所有质数个数。
知识补充:
因数枚举:分解一个数n,至于要从1 枚举到 n??√\sqrt n 即可,然后把i和 n / i 当做因数加入vector
整数分解(把一个整数枚举出其质数基连乘的形式):从2开始枚举质数基,然后每次把该整数尽可能的被当前质数除去最大次数,这样该整数就会变小,极大减少枚举量。注意和map搭配使用,记录每...
分类:
其他好文 时间:
2015-07-28 18:41:49
阅读次数:
104