2020寒假 gmoj2379 怪獸 模擬

2021-10-02 13:25:05 字數 1406 閱讀 4700

pywbktda最近正在打怪獸,乙個斯拉夫神話中的兇猛怪獸,乙個有著多個頭的巨大龍狀爬行

動物。開始的時候,怪獸有x個頭,你有n種打擊方式。如果你選擇第i種打擊方式,這個神奇的怪獸會減

少min(d i ,cur)個頭。這裡cur表示當前怪獸擁有的頭的數量。但是如果怪獸被打擊以後還至少留下

了乙個頭,那麼它就會再長出h i 個頭來。當cur = 0或者小於0的時候,怪獸被打敗了。

注意,你可以使用任何一種打擊方式任何次數,以任何的順序。

例如,如果當前cur = 10,d = 7,h = 10,那麼一次打擊以後怪獸就會有13個頭了(因為減少了7個

頭以後,怪獸還剩下3個頭,再加上10個頭)。但是如果當前cur = 10,d = 11,h = 100,那麼怪獸就被打

敗了。第一行輸入是兩個整數n和x,分別表示打擊的種類和開始時候怪獸的頭的數量。

接下來n行, 每行兩個整數描述了d i 和h i ,表示第i種打擊減少的頭的數量和會長出來的頭的數量。

【輸入樣例1】

3 10

6 38 2

1 4【輸入樣例2】

4 10

4 13 2

2 61 100

【輸入樣例3】

2 15

10 11

14 100

輸出只有乙個整數,表示最少需要打擊的次數,如果怪獸無法被打敗,就輸出−1。

【輸出樣例1】

2【輸出樣例2】

3【輸出樣例3】

-1題意:選擇最優的方法打涼怪獸,如果一次打不死怪獸就會「恢復頭」。

如果能一次打涼怪獸那是最好的,所以加個特判。

輸入時求出d和h的最大差,做標記。這就是「價效比」最高的一組,之後就一直用這一組。

輸入時求出「最大d」,以便最後把怪獸一擊ko。

預處理做完,直接模擬每一次怪獸的狀態,搞定!

#include

#include

#include

using

namespace std;

int n,x,maxx,maxn,ans,f,maxd;

struct node

a[101];

intmain()

for(

int i=

1;i<=n;i++)}

if(f==0)

for(

int i=

1;i<=n;i++)}

while

(f==1)

x=x-a[maxn]

.d; ans++;if

(x<=0)

else

}fclose

(stdin);

fclose

(stdout);

return0;

}

2020寒假 gmoj2380 白板

pywbktda有一塊白板,這塊白板的四條邊分別平行於座標軸。我們可以假設這塊白板的左 下角在 x 1 y 1 位置,右上角在 x 2 y 2 位置。現在有兩塊黑板放到白板的上面,這兩塊黑板的四條邊也是平行於座標軸的。我們可以設第1塊 黑板的左下角是 x 3 y 3 右上角在 x 4 y 4 位置,...

2020寒假 gmoj1876 約會

農場主約翰養了兩群有世仇的牛,它們被稱為蒙塔戈斯家族和卡普魯特家族。蒙塔戈斯家族的成員,羅密歐,愛上了美麗的朱麗葉,但後者正好是卡普魯特家族的成員。羅密歐希望與朱麗葉約會,但不希望卡普魯特家族的其他成員發現 否則會有可怕的事情發生!羅密歐和朱麗葉希望在牧場柵欄邊一塊盡可能大的區域中相見,這樣他們可以...

2020寒假 gmoj2090 最大值

給定n個數,x1,x2,xn 要求從中選出至少乙個數,至多n個數,使得乘積之和最大。第一行整數n,表示有多少個數 接下來n行,每行乙個整數xi,10 xi 10 輸出一行,表示最大乘積 sample input1 3 1 2 4sample input2 33 2 4sample output1 s...