随笔分类 -  其它--分块和莫队

摘要:"传送门" 可以发现,$\binom{n}{m}\equiv 1(mod~2)$ 当且仅当 $m~and~n~=~m$ 即 $m$ 二进制下为 $n$ 的子集 那么可以直接写一个 $3^{18}$ 的枚举子集 $DP$ 但是还有一个 $6^9$ 的做法 把数字分成前 $9$ 位和后 $9$ 位 设 阅读全文
posted @ 2018-12-27 09:14 Cyhlnj 阅读(134) 评论(0) 推荐(0)
摘要:"传送门" Sol 分开考虑 $\varphi(ij)$ 中 $ij$ 的质因子 那么 $$\varphi(ij)=\frac{\varphi(i)\varphi(j)gcd(i,j)}{\varphi(gcd(i,j))}$$ 直接莫比乌斯反演 设 $g(x,i)=\sum_{j=1}^{x}\v 阅读全文
posted @ 2018-12-24 12:47 Cyhlnj 阅读(138) 评论(0) 推荐(0)
摘要:sto "$lxl$" orz 考虑莫队,每次移动端点,我们都要询问区间内和当前数字异或有 $k$ 个 $1$ 的数字个数 询问 $[l,r]$ 可以再次离线,拆成询问 $[1,l 1]$ 和 $[l,r]$ 然后考虑莫队要移动 $[l,r]$ 的 $l$ 到 $p$ 假设 $p l$ 那么相当于每 阅读全文
posted @ 2018-11-02 14:18 Cyhlnj 阅读(443) 评论(0) 推荐(0)
摘要:题面 "Bzoj" Sol 树上带修改莫队 求$mex$可以对数字也分块 数字大于$n$就设为$n+1$ 查询就找到那个不满的块,在块内找到$mex$ cpp include define RG register define IL inline define Fill(a, b) memset(a 阅读全文
posted @ 2018-04-06 22:38 Cyhlnj 阅读(117) 评论(0) 推荐(0)
摘要:题面 "UOJ" Sol 树上带修改莫队 cpp include define RG register define IL inline define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long 阅读全文
posted @ 2018-04-06 22:16 Cyhlnj 阅读(164) 评论(0) 推荐(0)
摘要:题意 给定一个n个节点的树,每个节点表示一个整数,问u到v的路径上有多少个不同的整数。 n=40000,m=100000 Sol 树上莫队模板题 cpp include define RG register define IL inline define Fill(a, b) memset(a, b 阅读全文
posted @ 2018-04-06 07:57 Cyhlnj 阅读(164) 评论(0) 推荐(0)
摘要:做法 树分块,像王室联邦一样 然后怎么移动端点 蒯$VFK$的博客: 用S(v, u)代表 v到u的路径上的结点的集合。 用root来代表根结点,用lca(v, u)来代表v、u的最近公共祖先。 那么 S(v, u) = S(root, v) xor S(root, u) xor lca(v, u) 阅读全文
posted @ 2018-04-05 21:56 Cyhlnj 阅读(159) 评论(0) 推荐(0)
摘要:左右端点都要在块内比较!!! 再还要比较时间!!! 块的大小$n^\frac{2}{3}$ 阅读全文
posted @ 2018-02-24 22:42 Cyhlnj 阅读(140) 评论(0) 推荐(0)
摘要:题面 "传送门" Sol 这题可能是假的 离线莫队搞一搞,把数字再分块搞一搞,就行了 cpp include define IL inline define RG register define Fill(a, b) memset(a, b, sizeof(a)) using namespace s 阅读全文
posted @ 2018-01-27 11:22 Cyhlnj 阅读(133) 评论(0) 推荐(0)
摘要:题面 "传送门" Sol 求区间逆序对个数,离线莫队搞,开树状数组统计,记得开$longlong$ ~~不然WA无数遍不知道为什么~~ include define IL inline define RG register define Fill(a, b) memset(a, b, sizeof( 阅读全文
posted @ 2018-01-22 20:16 Cyhlnj 阅读(120) 评论(0) 推荐(0)
摘要:Bitset简介 下面介绍C++ STL 中一个非常有用的东西: Bitset 类似于二进制状压,它可以把信息转化成一个01串存储起来 定义方法: 首先要 然后定义一个长度为len的bitset S 一些操作 bitset还支持&,^,|三个运算 b._Find_first() 找到第一个1的位置 阅读全文
posted @ 2018-01-07 20:09 Cyhlnj 阅读(418) 评论(0) 推荐(0)