牛客網練習賽33

2021-09-02 20:08:51 字數 1273 閱讀 4568

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分鐘,都沒有出現怪物。
輸入的兩個數是怪物的種數與一天的時間數。分別用n、k表示

輸出的是怪物的種數與時間點的個數,(怪物種數最多的情況)

怎麼求怪物種數最多的情況?

1.先求在k時間內各個時間對應的怪物種數

2.使用for迴圈找到最大的怪物種數,然後作為ans1,使用ans2+=cnt[i]==ans1;求出出現最大的怪物數的時間出現的次數。

3.輸出。

關鍵點是怎麼求k分鐘內每分鐘出現的怪物種數

比如在第二分鐘出現怪物(k=6),第二分鐘,第四分鐘,第六分鐘也會出現怪物

#include#define m(a) memset(a,0,sizeof(a))

using namespace std;

const int maxn=1e6+5;

int n,k,m,ans1[maxn],ans2[maxn];

int main()

printf("%d %d\n",maxx,number);

return 0;

}

牛客網練習賽33

tokitsukaze最近沉迷一款rpg。這個rpg一天有k分鐘,每一天從第1分鐘開始。有n種怪物,第i種怪物每天第一次出現的時間為xi分鐘,第二次出現的時間為2 xi分鐘,第三次出現的時間為3 xi分鐘.同一時刻出現的怪物種類越多,打怪獲得的經驗也越高。為了高效練級,tokitsukaze想知道在...

牛客網練習賽 41

a 中文題意,直接說思路 可以知道在n m 0 的時候可以全部翻轉完,但當第一次翻轉完之後b使壞一次就永遠也翻不到,所以只有當n m的時候是yes其他都是no include using namespace std int main b 思路 簡單的計數dp,可以設 dp i j 表示的是你在第i輪...

操作集錦 牛客網 牛客練習賽60

題目傳送 時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 輸入描述 第一行兩個整數n,k 第二行乙個長度為n的字串,保證只存在小寫字母.輸出描述 示例1輸入 3 1 abc輸出 3備註 1 n 1e3 ...