上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 65 下一页
摘要: 因为保证了两向量不共线,平面内任何一个向量都被这两个向量唯一表示。问题变为一张有障碍点的网格图由左上走到右下的方案数。 到达终点所需步数显然是平方级别的,没法直接递推。注意到障碍点数量很少,那么考虑容斥,即用总方案数减去经过障碍点的方案数。对每个障碍点计算其作为第一个经过的障碍点的方案数即可。 阅读全文
posted @ 2018-11-17 17:07 Gloid 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j]为由i号点开始在子树内走j步最多能经过多少格点,g[i][j]为由i号点开始在子树内走j步且回到i最多能经过多少格点,转移显然。 阅读全文
posted @ 2018-11-17 14:20 Gloid 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 倍增floyd求出经过<=2k条边时两点间最短路,一个点到自身的最短路就是包含该点的最小环。然后倍增找答案即可。注意初始时到自身的最短路设为0,这样求出的最短路就是经过<=2k条边的而不是恰好2k条边的了。 阅读全文
posted @ 2018-11-16 23:53 Gloid 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 一通套路后得Σφ(d)μ(D/d)⌊n/D⌋2。显然整除分块,问题在于怎么快速计算φ和μ的狄利克雷卷积。积性函数的卷积还是积性函数,那么线性筛即可。因为μ(pc)=0 (c>=2),所以f(pc)还是比较好算的,讨论一波即可。 阅读全文
posted @ 2018-11-16 21:50 Gloid 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 按位统计,考虑每个数作为最大值的贡献,只需统计其左右有奇数个1和偶数个1的区间个数即可。 阅读全文
posted @ 2018-11-15 22:43 Gloid 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 对节点按编号分块。设f[i][j]为修改j号点对第i块的影响,计算f[i][]时dfs一遍即可。记录每一整块的sum。修改时对每一块直接更新sum,同时用dfs序上的树状数组维护子树和。查询时累加整块区间的sum,剩余部分bit上暴力查询。分析一下复杂度。设块大小为k,计算f数组的复杂度为O(n2/ 阅读全文
posted @ 2018-11-15 21:47 Gloid 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 考虑没有深度限制怎么做。显然的做法是直接转成dfs序上主席树,但如果拓展到二维变成矩形数颜色数肯定没法做到一个log。 另一种做法是利用树上差分。对于同种颜色的点,在每个点处+1,dfs序相邻点的lca处-1,那么查询子树颜色数就只需要查询子树和了。 然后加上深度限制。考虑将点一层层加进去,利用se 阅读全文
posted @ 2018-11-15 19:54 Gloid 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 判断两棵无根树是否同构只需要把重心提作根哈希即可。由于只添加了一个叶子,重心的位置几乎不发生偏移,所以直接把两棵树的重心提起来,逐层找哈希值不同且对应的两子树即可。被一个普及组子问题卡一年。 阅读全文
posted @ 2018-11-15 00:54 Gloid 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 显然答案应该是由单串以某位置为中心的极长回文串继续在另一个串里拓展得到的。枚举中间位置二分答案,哈希判断即可。注意考虑清楚怎么处理偶回文,比如像manacher一样加分隔符。 阅读全文
posted @ 2018-11-14 19:45 Gloid 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 不妨不管j<=i的限制。由卢卡斯定理,C(i,j) mod k=0相当于k进制下存在某位上j大于i。容易想到数位dp,即设f[x][0/1][0/1][0/1]为到第x位时是否有某位上j>i,是否卡n、m的限制的方案数。 阅读全文
posted @ 2018-11-14 00:37 Gloid 阅读(291) 评论(0) 推荐(0) 编辑
上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 65 下一页