随笔分类 - 点分治
摘要:令ans[i]表示权值和等于k的路径条数,然后点分治就可以了。 具体看代码。 代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<vector> 6 usin
阅读全文
摘要:考虑点分树。 求出每个重心所管辖的范围内的每个点到它的距离,建成点分树。 查询时二分答案,然后问题就转化为求到x的距离<=d的点的个数。 在点分树上暴力往上跑就行了,注意去重。 时间复杂度:O(nlog3n) 代码: 1 #include<cstdio> 2 #include<cstring> 3
阅读全文
摘要:bzoj2006: 定义一个四元组{x,l,r,w},表示左端点在x,右端点在[l,r]的超级和弦的最大美妙度在将w作为右端点时取到,w可以用前缀和+线段树/ST表求出。 对于每个i,我们将{i,i+L-1,i+R-1,w}放入一个大根堆中,每次取出美妙度最大的一个加到答案中,并将{i,l,w-1,
阅读全文
摘要:题目大意: 给出一棵树,每条边有权值,求经过少于l条边,权值和少于w的路径总数。 点分治。每次求出所有点到重心的距离,按w排序,然后维护一个树状数组,记录经过的边<=i的点个数。由于可能两个点都在一棵子树中,再容斥一下就好了。 代码: 1 #include<iostream> 2 #include<
阅读全文

浙公网安备 33010602011771号