传送门

除了操作 \(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/stdc++.h>
using namespace std;
typedef long long ll; const int maxn(7005); int mu[maxn], n, q, pr[maxn], tot;
bitset <maxn> bc[100005], bcm[7005], bcv[7005], ispr; int main() {
int i, j, op, l, r, v;
mu[1] = 1;
for (i = 2; i <= 7000; ++i) {
if (!ispr[i]) pr[++tot] = i, mu[i] = -1;
for (j = 1; j <= tot && pr[j] * i <= 7000; ++j) {
ispr[pr[j] * i] = 1;
if (i % pr[j]) mu[i * pr[j]] = -mu[i];
else {
mu[i * pr[j]] = 0;
break;
}
}
}
for (i = 1; i <= 7000; ++i)
for (j = i; j <= 7000; j += i) {
bcv[j].set(i);
if (mu[j / i]) bcm[i].set(j);
}
scanf("%d%d", &n, &q);
for (i = 1; i <= q; ++i) {
scanf("%d%d%d", &op, &l, &r);
if (op == 1) bc[l] = bcv[r];
else if (op == 2) scanf("%d", &v), bc[l] = bc[r] ^ bc[v];
else if (op == 3) scanf("%d", &v), bc[l] = bc[r] & bc[v];
else putchar(((bc[l] & bcm[r]).count() & 1) + '0');
}
return 0;
}

Codeforces 1097 Alex and a TV Show的更多相关文章

  1. Codeforces 1097F Alex and a TV Show (莫比乌斯反演)

    题意:有n个可重集合,有四种操作: 1:把一个集合设置为单个元素v. 2:两个集合求并集. 3:两个集合中的元素两两求gcd,然后这些gcd形成一个集合. 4:问某个可重复集合的元素v的个数取模2之后 ...

  2. Codeforces 1097F. Alex and a TV Show

    传送门 由于只要考虑 $\mod 2$ 意义下的答案,所以我们只要维护一堆的 $01$ 容易想到用 $bitset$ 瞎搞...,发现当复杂度 $qv/32$ 是可以过的... 一开始容易想到对每个集 ...

  3. 【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 ...

  4. 【CF1097F】Alex and a TV Show(bitset)

    [CF1097F]Alex and a TV Show(bitset) 题面 洛谷 CF 题解 首先模\(2\)意义下用\(bitset\)很明显了. 那么问题在于怎么处理那个\(gcd\)操作. 然 ...

  5. CF1097F Alex and a TV Show

    题目地址:CF1097F Alex and a TV Show bitset+莫比乌斯反演(个人第一道莫比乌斯反演题) 由于只关心出现次数的奇偶性,显然用bitset最合适 但我们并不直接在bitse ...

  6. codeforces 1097 Hello 2019

    又回来了.. A - Gennady and a Card Game 好像没什么可说的了. #include<bits/stdc++.h> using namespace std; cha ...

  7. 【CF1097F】Alex and a TV Show

    [CF1097F]Alex and a TV Show 题面 洛谷 题解 我们对于某个集合中的每个\(i\),令\(f(i)\)表示\(i\)作为约数出现次数的奇偶性. 因为只要因为奇偶性只有\(0, ...

  8. 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 ...

  9. [Codeforces 863E]Turn Off The TV

    Description Luba needs your help again! Luba has n TV sets. She knows that i-th TV set will be worki ...

随机推荐

  1. postgresql数据库uuid重复引发血案

    问题背景 .定时任务调用存储过程.将数据插入临时表时.出现了uuid重复的报错. 报错信息 [SQL]select DB_DATA.PR_SELECT() [Err] ERROR: duplicate ...

  2. 【bzoj2422】 Times 前缀和

    本来想练一下树状数组的,看到网上某人的blog后点了进来. 第一眼发现不会,出去上了个厕所发现离散化后不是一道简单前缀和题吗. 考虑到每一个人出现且仅出现一次,且出现的时间是在一个连续的区间内. 那么 ...

  3. input验证码框,输入非数字或非12位时,红框提示;每4位加一个空格

    以下代码:input验证码框,输入非数字或非12位时,红框提示;每4位加一个空格 //input验证码框,输入非数字或非12位时,红框提示;每3位加一个空格 $(".text"). ...

  4. easyUI的分页,只显示第X 共Y页。改为显示 第X 页 共Y页

    如下图,easyUI的分页,只显示第X 共Y页. 需求需要显示 第X 页 共Y页. 解决办法:在easyui-lang-zh_CN.js更改以下代码,即可.也就是在 “共{pages}页”前面加个 “ ...

  5. shell脚本实现无密码交互的SSH自动登陆

    ssh连接远程主机时候询问密码,跟su.sudo命令的默认行为一样,是不从stdin读入数据的,据称是为安全考虑,但是有时候在脚本当中确实需要无人守值的登陆. 搜索一下不难找到类似的例子,使用expe ...

  6. (转)AIX rootvg 镜像创建与磁盘更换

    # prtconf | grep disk # chdev -l hdisk1 -a pv=yes # extendvg rootvg hdisk1 # chvg -Qn rootvg # lsvg ...

  7. https数字证书交换过程介绍

    文章转自:https://www.2cto.com/kf/201804/739010.html,感谢原作者的辛苦整理,讲解的很清楚,谢谢. [https数字证书交换过程介绍] 注意:该问的背景用到了非 ...

  8. @JsonView注解的使用

    看到一个新的注解以前没有用过,记录一下使用方法. 注意是:com.fasterxml.jackson.annotation.JsonView @JsonView可以过滤pojo的属性,使Control ...

  9. docker 查看拉取镜像源地址

    命令:  cat /etc/docker/de

  10. 正则表达式匹配可以更快更简单 (but is slow in Java, Perl, PHP, Python, Ruby, ...)

    source: https://swtch.com/~rsc/regexp/regexp1.html translated by trav, travmymail@gmail.com 引言 下图是两种 ...