tokitsukaze and RPG 牛客练习赛33

链接:https://ac.nowcoder.com/acm/contest/308/B
来源:牛客网
 

题解:暴力,具体看代码注释

代码

#include <iostream>
using namespace std;
const int maxn=1e6+5;
int p[maxn];
int ans[maxn];
int main(){
    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        p[x]++;  //各个第一分钟出现的时间,下标即时间,出现一次,++
    }
    for(int i=1;i<=k;i++){
        for(int j=i;j<=k;j+=i)
            ans[j]+=p[i];   //暴力处理,求出每个时间点能出现的最大怪物值
    }
    int mx=0;
    for(int i=1;i<=k;i++){
        mx=max(mx,ans[i]);// 求出某个时间点能出现最大数量的怪物的数量
    }
    int res=0;
    for(int i=1;i<=k;i++){
        if(mx==ans[i])//这个时间点能出现的最大值与“最大值”相同  总数加一
            res++;
    }
    cout<<mx<<" "<<res<<endl;
    return 0;
}

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

tokitsukaze最近沉迷一款RPG。
这个RPG一天有k分钟,每一天从第1分钟开始。
有n种怪物,第i种怪物每天第一次出现的时间为Xi分钟,第二次出现的时间为2*Xi分钟,第三次出现的时间为3*Xi分钟......同一时刻出现的怪物种类越多,打怪获得的经验也越高。
为了高效练级,tokitsukaze想知道在一天内出现怪物种类最多的时间点会出现多少种怪物,这样的时间点有多少个。

输入描述:

第一行包括2个正整数n,k(1≤n≤10^5,1≤k≤10^6),表示有n种怪物,一天有k分钟。
接下来一行包括n个正整数X(1≤Xi≤10^6),含义如题面所示。

输出描述:

输出一行,包括两个整数a,b。
a表示怪物种类数,b表示时间点的个数。

 

示例1

输入

复制

3 6
2 2 3

输出

复制

3 1

说明

在第6分钟时,3种怪物都出现了。

示例2

输入

复制

3 5
2 2 3

输出

复制

2 2

说明

在第2分钟和第4分钟时,第一种和第二种怪物出现了。

示例3

输入

复制

6 10
1 2 3 4 5 6

输出

复制

4 1

说明

在第6分钟时,出现了第一种、第二种、第三种、第六种怪物。

示例4

输入

复制

3 5
6 6 6

输出

复制

0 5

说明

在第1分钟、第2分钟、第3分钟、第4分钟、第5分钟,都没有出现怪物。
posted @ 2018-12-08 10:01  UUUUh  阅读(158)  评论(0编辑  收藏  举报