切水题2.0
有一头长着 k 个脑袋的恶犬闯入了育才小镇,大家都很害怕。
你是一位勇士,并且做了充足的准备,要去战胜K头犬,守卫小镇的安宁。你携带了 n 种武器,每种武器每次可以消灭k头犬的 di 个头(每种武器可以无限次使用)。但是,k头犬生命力很强,它会吸收武器的能量,长出 hi 个新的头。
当它的头的数量小于等于 0 时,它就会被击败(且不能重新长出头)。请问你最少需要使用多少次武器就能击败k头犬。
模拟题,有些难度(但不多)。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,d[110],h[110],mx,y[110];
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>k;for(int i=1;i<=n;i++){cin>>d[i]>>h[i];mx=max(mx,d[i]);y[i]=d[i]-h[i];}sort(y+1,y+n+1);if(k<=mx){cout<<1;return 0;}if(y[n]<=0){cout<<-1;return 0;}int ans=1;if((k-mx)%y[n])ans+=(k-mx)/y[n]+1;else ans+=(k-mx)/y[n];cout<<ans;return 0;
} 