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\) 作为约数出现的次数
显然有:\(g(x)=\sum_{x|d}\ f(d)\)
因此有:\(f(x)=\sum_{x|d}\ \mu(\frac{d}{x})\ g(x)\)
由于只关心奇偶性, \(\mu(x)=-1\) 相当于 \(\mu(x)=1\) ,因此只需要把 \(\mu(x)=0\) 的找到即可
代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 100006, M = 7006;
bitset<M> a[N], p[M], miu, Miu[M];
void prework(int n) {
miu.set();
for (int i = 2; i * i <= n; i++)
for (int j = 1; i * i * j <= n; j++)
miu[i*i*j] = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; i * j <= n; j++) {
p[i*j][i] = 1;
Miu[i][i*j] = miu[j];
}
}
int main() {
prework(7000);
int n, q;
cin >> n >> q;
while (q--) {
int o;
scanf("%d", &o);
if (o == 1) {
int x, v;
scanf("%d %d", &x, &v);
a[x] = p[v];
} else if (o == 2) {
int x, y, z;
scanf("%d %d %d", &x ,&y, &z);
a[x] = a[y] ^ a[z];
} else if (o == 3) {
int x, y, z;
scanf("%d %d %d", &x, &y, &z);
a[x] = a[y] & a[z];
} else {
int x, v;
scanf("%d %d", &x, &v);
printf("%d", (a[x] & Miu[v]).count() & 1);
}
}
return 0;
}
CF1097F Alex and a TV Show的更多相关文章
- CF1097F Alex and a TV Show 莫比乌斯反演、bitset
传送门 发现自己对mobius反演的理解比较浅显-- 首先我们只需要维护每一个数的出现次数\(\mod 2\)的值,那么实际上我们只需要使用\(bitset\)进行维护,每一次加入一个数将其对应次数异 ...
- 【CF1097F】Alex and a TV Show(bitset)
[CF1097F]Alex and a TV Show(bitset) 题面 洛谷 CF 题解 首先模\(2\)意义下用\(bitset\)很明显了. 那么问题在于怎么处理那个\(gcd\)操作. 然 ...
- 【CF1097F】Alex and a TV Show
[CF1097F]Alex and a TV Show 题面 洛谷 题解 我们对于某个集合中的每个\(i\),令\(f(i)\)表示\(i\)作为约数出现次数的奇偶性. 因为只要因为奇偶性只有\(0, ...
- 【Codeforces 1097F】Alex and a TV Show(bitset & 莫比乌斯反演)
Description 你需要维护 \(n\) 个可重集,并执行 \(m\) 次操作: 1 x v:\(X\leftarrow \{v\}\): 2 x y z:\(X\leftarrow Y \cu ...
- 题解 CF1097F 【Alex and a TV Show】
妙妙题-- 这道题这要求%2的个数,肯定有什么性质 于是我们想到了用\(bitset\)来处理 由于三操作有\(gcd\),于是我们又想到用反演来解决 我们回忆一下反演的柿子 设\(f(x)\)为x出 ...
- CodeForces - 1097F:Alex and a TV Show (bitset & 莫比乌斯容斥)
Alex decided to try his luck in TV shows. He once went to the quiz named "What's That Word?!&qu ...
- Codeforces 1097 Alex and a TV Show
传送门 除了操作 \(3\) 都可以 \(bitset\) 现在要维护 \[C_i=\sum_{gcd(j,k)=i}A_jB_k\] 类比 \(FWT\),只要求出 \(A'_i=\sum_{i|d ...
- Codeforces 1097F Alex and a TV Show (莫比乌斯反演)
题意:有n个可重集合,有四种操作: 1:把一个集合设置为单个元素v. 2:两个集合求并集. 3:两个集合中的元素两两求gcd,然后这些gcd形成一个集合. 4:问某个可重复集合的元素v的个数取模2之后 ...
- Codeforces 1097F. Alex and a TV Show
传送门 由于只要考虑 $\mod 2$ 意义下的答案,所以我们只要维护一堆的 $01$ 容易想到用 $bitset$ 瞎搞...,发现当复杂度 $qv/32$ 是可以过的... 一开始容易想到对每个集 ...
随机推荐
- Linux 中用 dd 命令来测试硬盘读写速度
dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. dd 命令通用语法格式如下: dd if=path/to/input_file ...
- 【知名的3D造型设计软件】犀牛 Rhinoceros 5.5.2 for Mac
[简介] 今天和大家分享最新的3D设计软件 犀牛 Rhinoceros for Mac 5.5.2 版本,支持中文界面,这是一款Mac上知名的3D造型软件,犀牛可以广泛地应用于三维动画制作.工业制造. ...
- 使用mysql存放Ambari元数据的配置案例
使用mysql存放Ambari元数据的配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.环境准备 详情请参考我之前的笔记:离线方式部署Ambari2.6.0.0 中关 ...
- CSS3笔记3
1.CSS的层叠性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- swagger使用一新手篇
本文转自:http://javatech.wang/index.php/archives/74/ 先简单介绍下项目环境: JDK1.7 Spring 3.2.2 swagger-springmvc 1 ...
- bzoj千题计划314:bzoj3238: [Ahoi2013]差异(后缀数组+st表+单调栈)
https://www.lydsy.com/JudgeOnline/problem.php?id=3238 跟 bzoj3879 差不多 #include<cstdio> #include ...
- Silverlight 样式的灵活使用
众所周知,Silverlight将界面设计与代码实现分开.即便如此,如果不能灵活地运用样式Style,开发的效率依然会比较低.比如,针对类似的TextBlock,你可能需要反复地在设计器xaml中复制 ...
- docker 系列 - Java程序制作Docker Image推荐方案(转载)
本文转自 https://segmentfault.com/a/1190000016449865 , 感谢作者! 本文的源代码在:https://github.com/chanjarste... 这 ...
- SpringBoot系列: Spring MVC视图方法的补充
SpringMVC 视图方法的参数, 已经在这个文章中写得非常清楚了, 链接为 https://www.cnblogs.com/morethink/p/8028664.html 这篇文章做一些补充. ...
- 【noip 2014】提高组Day2T3.华容道
Description 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面,华容道是否根本就无法完成,如果能完成,最少需要多少时间. 小 B ...