T1 GCD

数学水题。。。

对于每个数,如果这个数有两个及以上的质因数的话,它所有除 \(1\) 之外的因数求 \(GCD\) 的值一定为 \(1\)。那么判断是否是质数或质数的次方即可(质数除 \(1\) 之外的因数只有它本身,而质数的次方除 \(1\) 之外的质因数只有一个,故不存在两个及以上的质因数。

再来考虑特殊的是质数的次方 \(x^n\) 的情况,它除 \(1\) 之外的因数一定只有 \(x\),所以得出这个质数并累加答案即可。那就跑欧拉筛的时候边跑边暴力更新呗。

#include <cstdio>
#include <cmath> const int MAXN = 1e7 + 5;
int num[MAXN], len = 0;
bool flag[MAXN];
int vis[MAXN]; typedef long long LL; void euler(int n) { // 欧拉筛
for(int i = 2; i <= n; i++) {
if(!flag[i]) {
num[++len] = i;
int t = 1;
while((LL)t * i <= n) { // 暴力枚举次方
t *= i;
vis[t] = i; // 记录这个次方对应的质数
flag[t] = true;
}
}
for(int j = 1; j <= len; j++) {
if(i * num[j] > n)
break;
flag[i * num[j]] = true;
if(i % num[j] == 0)
break;
}
}
return ;
} int main() {
int m, n;
scanf ("%d %d", &m, &n);
euler(n);
LL ans = 0;
flag[1] = true;
for(int i = m; i <= n; i++) {
if(i == 1) // 排除1的情况
continue;
if(!flag[i]) // 是质数
ans += i; // (所有除1之外的因数的GCD即是本身
else if(vis[i]) // 如果是质数的某个次方
ans += vis[i]; // 加上那个对应的质数
else // 否则这个数有两个及以上的质因子,加一即可
ans++;
}
printf("%lld\n", ans);
return 0;
}

T2 包含

显然如果用n方的算法会卡到飞起。。。(右边巨佬考场 DFS 记忆化过掉了呢

考虑优化。我们在每一次输入的时候更新一下有哪些数 \(\&\) 上这个数等于内个数本身。记这个集合内的数为 \(Q\),即是寻找有哪些 \(X\) 满足 \(Q \& X = X\)。

对于一个 \(Q \& X = X\),在二进制数位中 \(X\) 等于 \(1\) 的位,对应的 \(Q\) 中的位一定等于 \(1\),但因为 \(Q\) 是确定的,所以我们考虑依次替换掉 \(Q\) 二进制当中等于 \(1\) 的位,将其改为 \(0\),枚举所有情况即是找到了所有的 \(X\)。

至于如何枚举 \(Q\) 中为 \(1\) 的位……芜湖起飞。

int t = x;
while(t) {
vis[t] = true;
t = (t - 1) & x;
}

就是上述代码,最好在草稿纸上手推一下,不然很难理解。

为此我还和JC讨论了好久。

结论:上述代码按以下顺序枚举为 \(1\) 的位改其为 \(0\)。

Q: 1 0 0 0 1 0 0 1
1. ^
2. ^
3. ^ ^
4. ^
5. ^ ^
6. ^ ^
7. ^ ^ ^
#include <cstdio>

const int MAXN = 1000005;
bool vis[MAXN]; int main() {
int n, m;
scanf ("%d %d", &n, &m);
for(int i = 1; i <= n; i++) {
int x;
scanf ("%d", &x);
if(vis[x])
continue;
int t = x;
while(t) {
vis[t] = true;
t = (t - 1) & x;
}
}
while(m--) {
int x;
scanf ("%d", &x);
if(vis[x])
printf("yes\n");
else
printf("no\n");
}
return 0;
}

牛客 2020.10.20 TG 前两题的更多相关文章

  1. 2020牛客多校第八场K题

    __int128(例题:2020牛客多校第八场K题) 题意: 有n道菜,第i道菜的利润为\(a_i\),且有\(b_i\)盘.你要按照下列要求给顾客上菜. 1.每位顾客至少有一道菜 2.给顾客上菜时, ...

  2. 牛客网数据库SQL实战解析(51-61题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  3. 牛客网数据库SQL实战解析(41-50题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  4. 2019牛客多校第八场 F题 Flowers 计算几何+线段树

    2019牛客多校第八场 F题 Flowers 先枚举出三角形内部的点D. 下面所说的旋转没有指明逆时针还是顺时针则是指逆时针旋转. 固定内部点的答案的获取 anti(A)anti(A)anti(A)或 ...

  5. 牛客网数据库SQL实战解析(31-40题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  6. 牛客网数据库SQL实战解析(21-30题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  7. 牛客网数据库SQL实战解析(11-20题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  8. 牛客网数据库SQL实战解析(1-10题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  9. 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数

    目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...

随机推荐

  1. B. Once Again... 解析(思維、DP、LIS、矩陣冪)

    Codeforce 582 B. Once Again... 解析(思維.DP.LIS.矩陣冪) 今天我們來看看CF582B 題目連結 題目 給你一個長度為\(n\)的數列\(a\),求\(a\)循環 ...

  2. Java学习的第二十六天

    1.过滤处理流 DataOutputStream输入数据 用DataInputStream读数据 2.方法太多记不清 3.明天学习内存操作流和缓冲流

  3. Linux 系统编程 学习:09-线程:线程的创建、回收与取消

    Linux 系统编程 学习:09-线程:线程的创建.回收与取消 背景 我们在此之前完成了 有关进程的学习.从这一讲开始我们学习线程. 完全的开发可以参考:<多线程编程指南> 在Linux ...

  4. (模板)graham扫描法、andrew算法求凸包

    凸包算法讲解:Click Here 题目链接:https://vjudge.net/problem/POJ-1113 题意:简化下题意即求凸包的周长+2×PI×r. 思路:用graham求凸包,模板是 ...

  5. APIO 2020 爆零记

    Day -3 这几天集训,貌似大家都没有把APIO放在心上... Day 0 试了下机(非官方选手)... 感觉界面还是比较清新,(至少吊打BZOJ一个数量级) (话说APIO2020中国镜像为什么还 ...

  6. 【洛谷】P1009 阶乘之和——高精度算法

    题目描述 用高精度计算出S = 1! + 2! + 3! + - + n!  ( n ≤  50 ) S = 1! + 2! + 3! + - + n! ( n ≤ 50 ) 其中"!&qu ...

  7. docker部署redis主从和哨兵

    docker部署redis主从和哨兵 原文地址:https://www.jianshu.com/p/72ee9568c8ea 1主2从3哨兵 一.前期准备工作 1.电脑装有docker 2.假设本地i ...

  8. Spring Cloud 纯干货,从入门到实战

    导读 之前写过一篇SpringCloud从入门到精通的点我直达,微服务基础知识点我直达,今天我们使用Spring Cloud模拟一个电商项目.分别有以下2个服务,商品.订单.下面我们开始叭 技术栈 S ...

  9. Thinkphp3.2 cms之文章模块

    二.文章模块 <?php namespace Admin\Controller; use Think\Controller; class NewController extends Common ...

  10. K-近邻算法kNN

    K-近邻算法(k-Nearest Neighbor,简称kNN)采用测量不同特征值之间的距离方法进行分类,是一种常用的监督学习方法,其工作机制很简单:给定测试样本,基于某种距离亮度找出训练集中与其靠近 ...