首页 > 其他分享 >CF1333F Kate and imperfection 题解 线性筛

CF1333F Kate and imperfection 题解 线性筛

时间:2023-02-07 18:11:15浏览次数:64  
标签:CF1333F int 题解 imperfection 对应 maxn 线性 Kate

题目链接:http://codeforces.com/problemset/problem/1333/F

题目大意:

kate有一个集合S,S中的元素是1到n的整数

她认为集合S的一个子集M的集合的不完美值等于
\(\max_{a,b\in M} gcd(a,b)\) 且\(a!=b\)

对于整数k从2到n,kate想要知道所有大小为k的S的子集中,不完美值最小是多少

解题思路:

  • 最先找的是素数,对应 \(1\);
  • 然后会找 \(4\),对应 \(2\);
  • 然后会找 \(6, 9\),对应 \(3\);
  • 然后会找 \(8\),对应 \(4\);
  • 然后会找 \(10, 15, 25\),对应 \(5\),
  • ……

每加入一个数字,对应的 gcd 对应的就是它的最大的那个(非本身)的因数(素数比较特殊,就是 \(1\))

发现可以用线性筛预处理一下,求出每个整数最大的那个非本身的因数。

示例程序:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5 + 5;
bool isp[maxn];
int prime[maxn], cnt, fac[maxn], t[maxn];

void init(int n) {
    fac[1] = 1;
    for (int i = 2; i <= n; i++) {
        if (!fac[i])
            prime[cnt++] = i, fac[i] = 1;
        for (int j = 0; j < cnt && i * prime[j] <= n; j++) {
            fac[i * prime[j]] = i;
            if (i % prime[j] == 0)
                break;
        }
    }
    for (int i = 1; i <= n; i++)
        t[fac[i]]++;
}

int n, p, tot;

int main() {
    cin >> n;
    init(n);
    for (int k = 2; k <= n; k++) {
        while (tot < k)
            tot += t[++p];
        cout << p << " ";
    }
    return 0;
}

标签:CF1333F,int,题解,imperfection,对应,maxn,线性,Kate
From: https://www.cnblogs.com/quanjun/p/17099396.html

相关文章

  • 消息队列的延时以及过期失效,消息队列消息积压及占满问题解决思路
    大量消息在mq里积压了几个小时了还没解决几千万条数据在MQ里积压了七八个小时,从下午4点多,积压到了晚上11点多。这个是我们真实遇到过的一个场景,确实是线上故障了......
  • CF1787I Treasure Hunt 题解
    题目链接题意描述:定义一个序列的权值为一段前缀与一段子段,满足要么前缀与子段不交,要么完全包含的和的最大值,给定一个序列\(a\),求\(a\)的所有子区间的权值和\(n\le1......
  • Django关于站点管理Admin Site的常见问题解决方法
    1.改变django默认语言的方法?仅需添加’django.middleware.locale.LocaleMiddlewar’到MIDDLEWARE_CLASSES设置中,并确保它在’django.contrib.sessions.middleware.Session......
  • Android 软键盘弹出时布局内指定内容上移实现及问题解决
    AndroidSDK目前提供的软键盘弹出模式接口只有两种:一是弹出时自动回冲界面,将所有元素上顶,一种则是不重绘界面,直接将控件元素遮住,没有其他模式,如果......
  • CF1137F Matches Are Not a Child's Play 题解
    以最后被删去的点为根,这样子不会存在从父亲然后删掉某个点,儿子的删除顺序一定比父亲前。记每个点子树中的最大值为\(f_x\),那么一个点的排名,首先就需要加上\(<f_x\)的所......
  • robotframe环境搭建及问题解决
     1.安装pipinstallrobotframeworkipinstallrobotframework-ride进入C:\Python37\Scripts目录下,右击ride.py,选择使用python打开。出现RIDE界面表示RIDE安装成功。......
  • ABC288 EFG 题解
    E注意到后面选对前面的答案没有影响,而且前面选的顺序对后面的影响是连续的一段(如选2个,那么对应的\(c\)就应该是\(c[i-2..i]\)(对应\(i\)是1、2、3个选时的答案))然......
  • P3215 [HNOI2011]括号修复题解
    发现题解里的维护前后缀最大最小值的做法都是感性理解,所以我就来写个证明。将(看做\(-1\),)看做\(1\),首先几个变量:\(n\)代表括号序列的长度。\(a_i\)代表前缀和......
  • CF884D 题解
    题目传送门题目分析开始还真没看出来这题跟\(\text{P1090}\)合并果子的关系。其实只要逆向思考,把拆分看成效果一样的合并就可以了。而与合并果子不同的是,在这题当中......
  • abc285h题解
    考虑容斥,强制要求\(k\)个数为完全平方数,系数为\((-1)^k*C_n^k\)(因为我们要从\(n\)个数选出\(k\)个数作为完全平方数)。则在唯一分解\(p_1^{e_1}...p_n^{e_n}\)中,\(e_1...e_n......