zoukankan      html  css  js  c++  java
  • 嵊州普及Day4T1

    题意:从n个数中选出k个数,使他们任意两数之差都等于m。

    思路:任意差值都等于m,不就等价于k个数模m余数相同吗?

    然后桶排储蓄一下各数余数即可。

    见代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int n,k,m,s,flag,sum,a[100001],b[100001];
    int main()
    {
    //    freopen("rollover.in","r",stdin);
    //    freopen("rollover.out","w",stdout);
        cin>>n>>k>>m;
        for(int i=1;i<=n;i++)
        {
            cin>>s;
            a[s]++;
            b[s%m]++;
        }
        for(int i=1;i<=n;i++)
        if(b[i]>=k)
        {
            flag=i;
            cout<<"Yes"<<endl;
            break;
        }
        if(flag!=0)
        for(int i=flag;sum<=k;i+=m)
        {
            while(a[i]>0&&sum<k)
            {
                cout<<i<<" ";
                a[i]--;
                sum++;
            }
        }
        else
        cout<<"No";
        return 0;
    }

    好吧又炸了。

    注意主函数第10行循环细微的区别,本来循环m的循环了n,这里就不解释了。

    见代码*2:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int n,k,m,s,flag,sum,a[100001],b[100001];
    int main()
    {
    //    freopen("rollover.in","r",stdin);
    //    freopen("rollover.out","w",stdout);
        cin>>n>>k>>m;
        for(int i=1;i<=n;i++)
        {
            cin>>s;
            a[s]++;
            b[s%m]++;
        }
        for(int i=0;i<m;i++)
        if(b[i]>=k)
        {
            flag=i;
            cout<<"Yes"<<endl;
            break;
        }
        if(flag!=0)
        for(int i=flag;sum<=k;i+=m)
        {
            while(a[i]>0&&sum<k)
            {
                cout<<i<<" ";
                a[i]--;
                sum++;
            }
        }
        else
        cout<<"No";
        return 0;
    }

    好题哉!!!

     

  • 相关阅读:
    docker学习网址
    ubantu安装docker
    ssh查看自己的公钥
    Ubuntu 桥接设置 (在ubantu 18.04.5 之前好用 ,,,,18.04.5 就不好用了)
    学习地址
    MANO官网
    centos7 的防火墙 开放端口
    centos7安装arp-sacn (./configure make makeinstall)
    yum源-postgresql
    行拆分,列合并
  • 原文地址:https://www.cnblogs.com/qing1/p/11185290.html
Copyright © 2011-2022 走看看