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 62 2 3
3 1
在第6分鐘時,3種怪物都出現了。示例2
3 52 2 3
2 2
在第2分鐘和第4分鐘時,第一種和第二種怪物出現了。示例3
6 101 2 3 4 5 6
4 1
在第6分鐘時,出現了第一種、第二種、第三種、第六種怪物。示例4
3 56 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 ...