题解 CF1097F 【Alex and a TV Show】】的更多相关文章

题目地址:CF1097F Alex and a TV Show bitset+莫比乌斯反演(个人第一道莫比乌斯反演题) 由于只关心出现次数的奇偶性,显然用bitset最合适 但我们并不直接在bitset中存 \(x\) 的个数,而是存 \(x\) 的约数出现的个数 对于操作1,先预处理然后直接赋值 对于操作2,直接 \(xor\) 对于操作3,直接 \(and\) 对于操作4,用莫比乌斯反演处理一下: 设 \(f(x)\) 为 \(x\) 出现的次数, \(g(x)\) 为 \(x\) 作为约数…
传送门 发现自己对mobius反演的理解比较浅显-- 首先我们只需要维护每一个数的出现次数\(\mod 2\)的值,那么实际上我们只需要使用\(bitset\)进行维护,每一次加入一个数将其对应次数异或\(1\).那么\(2\)操作就相当于将集合\(x\)对应的\(bitset\)赋值为\(y\)与\(z\)的异或和. 看到\(3\)操作中的gcd,考虑莫比乌斯反演.我们在加入一个数到集合中的时候,不是加入它本身,而是加入它的所有因子.这样我们的\(3\)操作的实质就是一个按位与操作了. 对于\…
[CF1097F]Alex and a TV Show(bitset) 题面 洛谷 CF 题解 首先模\(2\)意义下用\(bitset\)很明显了. 那么问题在于怎么处理那个\(gcd\)操作. 然后就莫比乌斯反演一下:\(f[n]=\sum\limits_{n|d}g[d],g[n]=\sum\limits_{n|d}\mu(\frac{d}{n})f[d]\),发现这样子搞完之后,如果要处理集合\(g\)的\(gcd\)操作,就是把\(g\)变成\(f\)之后再按位乘起来(二进制意义下的按…
[CF1097F]Alex and a TV Show 题面 洛谷 题解 我们对于某个集合中的每个\(i\),令\(f(i)\)表示\(i\)作为约数出现次数的奇偶性. 因为只要因为奇偶性只有\(0,1\)两种,我们考虑用\(bitset\)维护这个\(f\). 那么, 对于\(1\)操作你可以预处理一下\(v\)的\(bitset\), 对于\(2\)操作就是两个集合的\(bitset\)异或一下, 对于\(3\)操作就是两个集合的\(bitset\)与一下. 最后我们要由\(f(i)\)推回…
Description 你需要维护 \(n\) 个可重集,并执行 \(m\) 次操作: 1 x v:\(X\leftarrow \{v\}\): 2 x y z:\(X\leftarrow Y \cup Z\): 3 x y z:\(X \leftarrow \{\gcd(a, b)\ |\ a\in Y, b\in Z\}\): 4 x v:询问 \(v\) 在 \(X\) 中出现次数 \(\bmod 2\) 的结果. Hint \(1\le n\le 10^5, 1\le m\le 10^6…
妙妙题-- 这道题这要求%2的个数,肯定有什么性质 于是我们想到了用\(bitset\)来处理 由于三操作有\(gcd\),于是我们又想到用反演来解决 我们回忆一下反演的柿子 设\(f(x)\)为x出现了多少次,\(F(x)\)为x的倍数出现了多少次 \[F(d) = \sum_{d|x}f(x)\] 跟据反演,我们有: \[f(x) = \sum_{x |d}F(d) * \mu(\frac{d}{x})\] 我们要求的数即为\(f(v)\) 由于\(\mu\)的取值只有\(-1, 0, 1\…
Alex decided to try his luck in TV shows. He once went to the quiz named "What's That Word?!". After perfectly answering the questions "How is a pseudonym commonly referred to in the Internet?" ("Um... a nick?"), "After…
A. Alex and a Rhombus time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output While playing with geometric figures Alex has accidentally invented a concept of a n-th order rhombus in a cell grid. A 1-s…
传送门 除了操作 \(3\) 都可以 \(bitset\) 现在要维护 \[C_i=\sum_{gcd(j,k)=i}A_jB_k\] 类比 \(FWT\),只要求出 \(A'_i=\sum_{i|d}A_d\) 就可以直接按位相乘了 求答案就是莫比乌斯反演,\(A_i=\sum_{i|d}\mu(\frac{d}{i})A'_i\) 把每个数字的 \(\mu\) 的 \(bitset\) 预处理出来,乘法就是 \(and\) 最后用 \(count\) 统计答案 # include <bits…
题意:有n个可重集合,有四种操作: 1:把一个集合设置为单个元素v. 2:两个集合求并集. 3:两个集合中的元素两两求gcd,然后这些gcd形成一个集合. 4:问某个可重复集合的元素v的个数取模2之后是多少. 思路:因为集合的元素是对2取模,那么我们可以用bitset来代替可重复集合.但是,如果每个bitset来直接代表多重集的话,第三个操作会很麻烦.所以我们每个集合的bitset用来代表每个元素和每个元素约数的集合,这样某个约数为标记为1说明这个约数的倍数的和为奇数(这个约数的倍数就是这个元素…