• 洛谷 P1978 集合


    集合

    题目描述

    集合是数学中的一个概念,用通俗的话来讲就是:一大堆数在一起就构成了集合。

    集合有如下的特性:

    • 无序性:任一个集合中,每个元素的地位都是相同的,元素之间是无序的。

    • 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。

    • 确定性:给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现。

    例如 A = { 1 , 2 , 3 } A = \{ 1, 2, 3 \} A={1,2,3} 就是一个集合。我们可以知道, 1 1 1 属于 A A A,即 1 ∈ A 1 \in A 1A 4 4 4 不属于 A A A,即 4 ∉ A 4 \notin A 4/A。一个集合的大小,就是其中元素的个数。

    现在定义一个特殊的 k k k-集合,要求满足:

    • 集合的所有特性
    • 对任意一个该集合内的元素 x x x,不存在一个数 y y y,使得 y = k x y = k x y=kx 并且 y y y 属于该集合。即集合中的任意一个数,它乘以 k k k 之后的数都不在这个集合内。

    给你一个由 n n n 个不同的数组成的集合,请你从这个集合中找出一个最大的 k k k-集合。

    输入格式

    第一行:两个整数: n n n k k k

    第二行: n n n 个整数: a i a_i ai 表示给定的集合。

    输出格式

    第一行:一个整数: a n s \mathit{ans} ans 表示最大的 k k k-集合的大小。

    样例 #1

    样例输入 #1

    6 2	
    2 3 6 5 4 10
    
    • 1
    • 2

    样例输出 #1

    3
    
    • 1

    提示

    提示:在样例所给集合中,找出的最大的 2 2 2-集合为 { 4 , 5 , 6 } \{ 4, 5, 6 \} {4,5,6}

    • 对于 30 % 30 \% 30% 的数据: n , k ≤ 100 n, k \le 100 n,k100
    • 对于 40 % 40 \% 40% 的数据: a i ≤ 2 31 − 1 a_i \le 2^{31} - 1 ai2311
    • 对于 70 % 70 \% 70% 的数据: n , k ≤ 5000 n, k \le 5000 n,k5000
    • 对于 100 % 100 \% 100% 的数据: 2 ≤ n , k ≤ 10 5 2 \le n, k \le {10}^5 2n,k105 1 ≤ a i ≤ 2 63 − 1 1 \le a_i \le 2^{63} - 1 1ai2631

    分析

    我们直接用STL里的set就可以啦~

    代码

    #include
    
    using namespace std;
    
    long long a[1000000];
    
    set <long long> se;//set
    
    int n,k;
    
    int main()
    {
        cin>>n>>k;
        
        for(int i=1;i<=n;i++)
    	{
            cin>>a[i];
        }
        
        sort(a+1,a+n+1);//排序
        
        for(int i=1;i<=n;i++)
    	{
            if(a[i]%k!=0||se.find(a[i]/k)==se.end())
    		{
                se.insert(a[i]);//满足条件就插入
            }
        }
        
        cout<<se.size();//输出集合的大小
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    结束啦~

  • 相关阅读:
    matplotlib入门详细教程
    AIGC Midjourney 机器人绘画案例演示
    JVM完整图文学习笔记 (含拓展知识广度学习) 第三章: 类加载与字节码技术
    Python学习四(文件操作)
    基于约束的装配设计【CadQuery】
    【VBA】获取指定目录下的Excel文件,并合并所有excel中的内容。
    【浅学Java】排序大全
    前端经典面试题 | 闭包的作用和原理
    在 Android 上简单安全地登录——使用凭证管理器和密钥
    [机缘参悟-119] :一个IT人的反思:反者道之动;弱者,道之用 VS 恒者恒强,弱者恒弱的马太效应
  • 原文地址:https://blog.csdn.net/m0_66603329/article/details/126549752