zoukankan      html  css  js  c++  java
  • tokitsukaze and RPG 牛客

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

    题目描述

    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分钟,都没有出现怪物。

    题意还是很简单的,直接暴力就能过,但是注意的就是很有可能几个怪物的Xi相同,所以注意一下暴力方式,不然怎么改死活也只会过95%
    #include<iostream>
    int brr[1000001];
    int crr[1000001];
    using namespace std;
    int main()
    {
    	int n,k;
    	cin>>n>>k;
    	int arr[100001];
    	for(int i=0;i<n;i++)
    	{
    		cin>>arr[i];
    		crr[arr[i]]++;      //相同的Xi
    	}
    	for(int i=1;i<=k;i++)
    	{
    		if(crr[i]!=0)        //降低复杂度,虽然不加也对还不超时(垃圾数据)
    		for(int j=i;j<=k;j+=i)
    		{
    			brr[j]+=crr[i];
    		 } 
    	}
    	int max=0;
        for(int i=0;i<=k;i++)    //最大值
        {
            if(brr[i]>max)
                max=brr[i];
        }
        int sum=0;
        for(int i=1;i<=k;i++)    //个数
        {
            if(brr[i]==max)
                sum++;
        }
        cout<<max<<' '<<sum;
    }
    

      

  • 相关阅读:
    Java并发编程
    Git
    Spring Boot
    IDEA工具
    Java基础
    数据库架构
    设计模式
    网络基础
    管理知识
    linux安装数据库mysql
  • 原文地址:https://www.cnblogs.com/mozheaishang/p/10088603.html
Copyright © 2011-2022 走看看