- 博客(7)
- 收藏
- 关注
原创 老逗的gcd 莫比乌斯反演
这个题一看就是莫比乌斯反演,怎么处理无平方因子数呢?由莫比乌斯函数的性质,不难写出:简单反演得:那么令重点在于处理的这个函数的值,用传统筛的话可以加一个小优化就是底数和倍数都只枚举Mob不为0的数即设Cur数组保存所有Mob不为0的数有#include#includeusing namespace std;typedef long long LL;const
2016-04-14 09:07:51
1276
原创 BZOJ2152 聪聪可可 点分治
此题明显可以点分治解决,对每层分治块递归子块,求出块内有多少距离%3=0,1,2的节点,与之前其他块的信息归并,即ans+=f[0]*g[0]+f[1]*g[2]+f[2]*g[1],再把g加到f上面去即可注意点分治求重心一定注意不要打错字母(打混x,y之类的)注意此题题意诡异,点对要*2+n(单点也算,反过来算两次)分母是n*n而不是n*(n-1)/2#include#in
2016-04-13 23:11:41
396
原创 BZOJ3160 万径人踪灭 FFT+manacher
对不连续的对称序列计数显然可以转化为对称序列-连续对称序列连续对称序列显然可以用manacher算法计算得到:P[i]的和即为连续对称序列的个数所有对称序列总是关于某条对称轴对称,所以对称点的下标和为定值另f[i]表示以i为对称轴的点对个数(含自身对称)显然其中下标为按manacher规则翻倍之后的下标而这个布尔表达式我处理不来QAQ。。。膜了PoPoQQQ题解才知道可
2016-04-13 22:51:07
554
原创 素数路径 Prime Distance On Tree 点分治+FFT
对于这个题,没有什么好用的数学性质,那么考虑统计所有长度的路径条数路径统计问题不难想到点分治之后统计每个点的路径条数即可假设之前子树到根的距离集合存为B,其中B[i]表示到根距离为i的有多少条当前子树为A,那么所有路径生成路径不拿发现符合A*B的卷积形式即而且对于一个分治块,路径长度不超过结点个数,因此规模可以降低到同阶每次对一个子树用FFT计算统计,可以写出如下代码:
2016-04-13 19:30:26
1522
原创 BZOJ4524 [CQOI2016]伪光滑数 可持久化可并堆+DP
很有意思的一个题,可惜爆搜可以A,但考场上我竟然乱搞出这种算法简直呵呵因为是求第K大所以不难想到用堆的K路归并问题,对答案的种类我们分类,最直观的分类就是按最大因子和分解项数来分类即用f[i,j]表示最大质因子为p[i],用了j项分解数的数的集合,因为要求数的不重不漏,我们力求让所有的数都由互素的小数集合扩展得到,为了获得之前所有的数,我们保存g[i,j]为f[i,j]的前缀和,意为前i种
2016-04-12 12:52:14
1927
原创 BZOJ1095 [ZJOI2007]捉迷藏 动态点分治
每次修改一个点的黑白状态,询问树上最远黑点距离拿这个题做动态点分治模板题:(%%%PoPoQQQ大爷)点分治的过程是对树块找重心之后分成多个小树块,降低规模分别处理的过程,把链的信息收到其中“最高重心”上,从所有的重心处像分治中的不同子树索取到重心的链,就可以覆盖所有链的信息。动态点分治就像把序列分治变成线段树一样,在分治的架子上加了信息维护,实现树链信息维护与查询。需要什么?每个
2016-04-11 19:49:07
3758
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人