当前位置: 首页 > news >正文

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}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;
}

转载于:https://www.cnblogs.com/cjoieryl/p/10280400.html

相关文章:

  • 第八届(2018)CSR年度盛典在北京举办
  • 身残心不残 河北大城63岁独身老人捐献遗体
  • Spring Batch JSON 支持
  • settings配置数据库和日志
  • K-means 怎么选 K ?
  • 蚂蚁金服庆涛:OceanBase支撑2135亿成交额背后的技术原理
  • Electron构建跨平台应用Mac/Windows/Linux
  • 每个 JavaScript 开发者都该了解的 ES2018 新特性
  • 混合式开发框架资料汇总
  • Python爬虫初学者需要了解的知识与技能
  • js获取客户端本地ip
  • 「小程序JAVA实战」小程序视频播放的时候生命周期的控制(56)
  • oracle中无法用退格和上下翻命令解决
  • 我发起并创立了一个 Javascript 前端库 开源项目 jWebForm
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • .pyc 想到的一些问题
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • canvas 五子棋游戏
  • centos安装java运行环境jdk+tomcat
  • css选择器
  • ES6核心特性
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java超时控制的实现
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Joomla 2.x, 3.x useful code cheatsheet
  • Laravel核心解读--Facades
  • PAT A1092
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • redis学习笔记(三):列表、集合、有序集合
  • SpiderData 2019年2月25日 DApp数据排行榜
  • STAR法则
  • VuePress 静态网站生成
  • Vue学习第二天
  • 闭包--闭包作用之保存(一)
  • 电商搜索引擎的架构设计和性能优化
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 如何进阶一名有竞争力的程序员?
  • 如何选择开源的机器学习框架?
  • 一起参Ember.js讨论、问答社区。
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (差分)胡桃爱原石
  • (二)c52学习之旅-简单了解单片机
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (算法设计与分析)第一章算法概述-习题
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET gRPC 和RESTful简单对比
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 的程序集加载上下文
  • .net 反编译_.net反编译的相关问题