珠海网站制作公,简单大气的网站,淘宝领卷网站什么做,重庆 机械有限公司 江北网站建设链接#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源#xff1a;牛客网
示例1
输入
1 10
3 5
输出
3
说明 只有一把回旋镖#xff0c;你可以先打两次伤害为3的#xff0c;再打一次倾尽全力的#xff0c;造成的伤害为5。总伤害为33511#xff0c;即可获得胜…
链接登录—专业IT笔试面试备考平台_牛客网 来源牛客网
示例1
输入
1 10
3 5
输出
3
说明 只有一把回旋镖你可以先打两次伤害为3的再打一次倾尽全力的造成的伤害为5。总伤害为33511即可获得胜利。 示例2
输入
2 100
1 30
1 20
输出
52
说明 你可以先把第一把倾尽全力打出去造成30伤害。接下来用第二把连续攻击50次造成50伤害。最后把第二把也打出去造成20伤害。总伤害为305020即可击杀。 解析 贪心计算出 “重复扔” 伤害的最大值 mx然后把比mx伤害高的全部 “全力” 扔出最后剩余的血量用mx重复扔即可。 这里有个疑问如果“重复扔”的最大伤害和 “全力扔” 的最大伤害是同一把飞镖 p 那么这样计算不会把这个 p 也扔出去吗 不影响结果因为这个飞镖 p 的“全力扔”伤害比“重复扔”高那么最后一次必定会全力扔 p 所以可以先计算进去不影响结果。
#includebits/stdc.h
using namespace std;
typedef long long ll;
const int N1e55;
int n,h,mx,a[N],cnt,t;
int main(){scanf(%d%d,n,h);for(int i1;in;i){scanf(%d%d,t,a[i]);mxmax(mx,t);}sort(a1,a1n);reverse(a1,a1n);for(int i1;h0in;i){if(a[i]mx) h-a[i],cnt;else break;}if(h0h%mx) cnt;printf(%d,h0?cnth/mx:cnt);return 0;
}