• 洛谷 P1414 又是毕业季II


    https://www.luogu.com.cn/problem/P1414

    求出每个数的因子,统计每个因子的出现次数

    f[i] 表示出现至少i次的最大因子

    先求出现i次,后缀最大值求至少i次

    为什么总是往质因数方面想呢,质因数分解之后更麻烦了。

    #include<cmath>
    #include<cstdio>
    #include<algorithm>
    
    using namespace std;
    
    int b[1000001],f[100001];
    
    int main()
    {
        int n,x,m;
        scanf("%d",&n);
        for(int i=1;i<=n;++i) 
        {
            scanf("%d",&x);
            m=sqrt(x);
            for(int i=1;i<=m;++i)
                if(!(x%i))
                {
                    b[i]++;
                    if(i*i!=x) b[x/i]++;
                }
        }
        for(int i=1;i<=1000000;++i) f[b[i]]=i;
        for(int i=99999;i;--i) f[i]=max(f[i],f[i+1]);
        for(int i=1;i<=n;++i) printf("%d
    ",f[i]);
    }

    题目背景

    “叮铃铃铃”,随着高考最后一科结考铃声的敲响,三年青春时光顿时凝固于此刻。毕业的欣喜怎敌那离别的不舍,憧憬着未来仍毋忘逝去的歌。1000多个日夜的欢笑和泪水,全凝聚在毕业晚会上,相信,这一定是一生最难忘的时刻!

    题目描述

    彩排了一次,老师不太满意。当然啦,取每位同学的号数来找最大公约数显然不太合理。于是老师给每位同学评了一个能力值。于是现在问题变为,从n个学生中挑出k个人使得他们的默契程度(即能力值的最大公约数)最大。但因为节目太多了,而且每个节目需要的人数又不知道。老师想要知道所有情况下能达到的最大默契程度是多少。这下子更麻烦了,还是交给你吧~

    PS:一个数的最大公约数即本身。

    输入格式

    第一行一个正整数n。

    第二行为n个空格隔开的正整数,表示每个学生的能力值。

    输出格式

    总共n行,第i行为k=i情况下的最大默契程度。

    输入输出样例

    输入 #1
    4
    1 2 3 4
    
    输出 #1
    4
    2
    1
    1
    

    说明/提示

    【题目来源】

    lzn原创

    【数据范围】

    记输入数据中能力值的最大值为inf。

    对于20%的数据,n<=5,inf<=1000

    对于另30%的数据,n<=100,inf<=10

    对于100%的数据,n<=10000,inf<=1e6

  • 相关阅读:
    C# 多线程Thread.IsBackground=True的作用
    JS 判断用户设备 移动端或桌面端
    VSCode 代码格式化 快捷键
    PHP 根据 IP 获取定位数据
    C# 将文本写入到文件
    C# 读取文件内容
    PHP 美化输出数组
    VSCode 设置 Tab 空格
    custom post types 404 Page Error
    [已解决] wordpress 修改 permalink 后 页面 404 问题
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/12029546.html
Copyright © 2020-2023  润新知