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...