随笔分类 - 莫队
摘要:题意: T次询问,每次给出n,m。求sigma(k:0->m)C(n, k)。 题解: 用离线莫队来做。 令S(n,m) = sigma(k:0->m)C(n, k)。 S(n+1, m) = 2S(n, m) - C(n, m) S(n-1, m) = (S(n, m) + C(n-1, m))
阅读全文
摘要:题意; 一棵N个节点的树,有点权。M次询问,每次询问点(u,v)路径上有多少个权值不同的点。 题解: 树上开莫队,分块方法可以参照BZOJ1086题的方式。按照询问点(u,v)所在块将询问进行排序。更新路径时用vis数组标记路径上的点是否访问过。 #include <bits/stdc++.h> u
阅读全文
摘要:题意: n个数m次查询,每次查询给出l,r求子区间异或和为k的个数。 题解: 预处理前缀异或和,因为是区间相减求满足的所以左区间要减1。要注意数组要开2e6因为两个1e6的数异或可能会更大,答案也要开long long。 #include <bits/stdc++.h> using namespac
阅读全文
摘要:题意: m次查询。每次查询范围[L,R]中出现次数等于该数字的数字个数。 题解: 由于分块,在每次询问中,同一块时l至多移动根号n,从一块到另一块也是最多2倍根号n。对于r,每个块中因为同一块是按y排序,所以最多移动根号n;一共根号n个块。注意l和r要分开考虑。 要注意的是这道题需要离散一下数据。
阅读全文