分层图最短路,令k=sqrt(n)
如果p>k,那么从这个点出发只需要连
如果p
建有k+1层的分层图,把第0层视为每个位置的源点,对于p
最后的建图:
第1层到第k层每层都向对应的第0层连边权是0的边
每一层相邻的%p相同的点互相连边权是1的边
对于每个>k的,从出发点向可以到达的点连距离=跳跃步数的边
发现这样内存不够,所以把k设小一点。
写错的地方:
1.少加了一种边...
我们发现每次加入的边模p的余数是相同的,很容易想到对p分块
当p>sqrt(n)时,最多会连出O(sqrt(n))条边,直接连边即可
当p
把图分成sqrt(n)+1层,最底层表示原来的节点
从下往上依次表示p=1、2、3……时的节点
对于每个p,把模p的余数相同的点顺次连接
对于每个读入的p,从最底层向对应的第p层的节点连一条权值为0的边即可
据说spfa快?
还算是道不错的题
...
#一般穷举 #改进,//2或者//3。能减少至少一半的计算量 #改进,sqrt(num)+1,然后根据对称性求出另一个因子。能减少90%的计算量! ...
分类:
其他好文 时间:
2016-05-05 11:01:50
阅读次数:
120
乱搞,处理出这三样东西,[1,i]所包含的逆序对数cnt[i],区间[1,i]对于区间[j*sqrt(n),(j+1)*sqrt(n)]的逆序对数sum[j][i],以及倒序将每个元素插入主席树,那么询问[l,r]的答案就为[1,r]的逆序对数减去[1,l-1]的逆序对数减去(A,B)(A∈[1,l ...
分类:
其他好文 时间:
2016-05-05 02:04:22
阅读次数:
170
基础威佐夫博弈,判断奇异局势即可,判断方式为k为两数之差绝对值,(sqrt(5) + 1) / 2 * k若等于两数小者则为奇异局势,也就是必败态. ...
分类:
其他好文 时间:
2016-04-30 19:37:55
阅读次数:
153
落点偏差经典方法是通过卯酉半径和角度偏差算纵向和横向偏差,如果落点和目标点近的话可不可以利用发射系三个坐标直接做差、平方、求和,再开方,即
L=sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)
这样子算出来的偏差是不是纵向和横向偏差对应的斜距?
我用上式算出来偏了50米,但利用卯酉法却差了几公里,很是疑惑。。。
发射系是旋转的,上式误差会那么大吗?...
分类:
其他好文 时间:
2016-04-29 19:51:06
阅读次数:
144
暴力的做法就是直接找到所有a,ba,b都小于等于某个询问的边然后并查集合并,维护每个集合的a,ba,b得最大值看是否等于询问的a,ba,b
然后就可以考虑分块,把边按照aa排序,每隔n?√\sqrt{n}分为一块
块前的按照bb值排序按顺序插入,块内的暴力判断,并查集合并,每次都把块内合并的记录下来,处理完某个询问时就撤回并查集的操作
块的大小为n?√\sqrt n可能会TT 改成n?log...
分类:
其他好文 时间:
2016-04-29 19:29:03
阅读次数:
142
人们很早就在Quake3源代码中发现了类似如下的C代码,它可以快速的求1/sqrt(x),在3D图形向量计算方面应用很广
float invSqrt(float x)
{
float xhalf = 0.5 * x;
int i = *(int*)&x; // get bits for floating value
i = 0x5f3759df - (i >> 1); // gives ...
分类:
编程语言 时间:
2016-04-29 17:31:54
阅读次数:
385
C++ 的 double 是有负零(negative zero)的。负零在某些计算中是有意义的。例如: 除此之外,负零在某些数学函数中也有利用,例如 sqrt(std::complex) 同时零和负零的加减计算也有它的特殊性,例如下面的代码: 这段代码在 VS2015 中编译运行的结果为: 从结果中 ...
分类:
编程语言 时间:
2016-04-28 23:52:30
阅读次数:
347
首先可以看出这是一道求最短路的题目,但暴力建图最多n2 条边,所以考虑建图优化 对于p>sqrt(n) 的青蛙可以直接暴力建,最多n*sqrt(n) 条边 对于p<sqrt(n) 的青蛙添加辅助点,枚举这sqrt(n)个长度,每个长度建立n个辅助点前后对应连边,同时向它们可以到达的点以及可以到达它们 ...