您当前的位置: 首页 > 

对方正在debug

暂无认证

  • 2浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Kill the Monster(枚举)

对方正在debug 发布时间:2022-02-02 16:28:35 ,浏览量:2

题目 题意:给定角色的生命值hc, 攻击值dc,怪兽的生命值hm,攻击值dm。角色和怪兽轮流互相攻击,角色先攻击。每次角色对怪兽的攻击,怪兽生命值减dc;每次怪兽对角色的攻击,角色的生命值减dm。如果一方的生命值减为0或负数,则另一方胜利。 现在有k枚硬币,每枚硬币,可以选择给角色增加w的攻击值,或者增加a的生命值。 问利用这k枚硬币,角色能否取胜。

思路:角色赢怪兽,本质就是角色挂掉需要被锤的次数要大于等于怪兽挂掉需要被锤的次数。 ( h c + d m − 1 ) / d m > = ( h m + d c − 1 ) / d c (hc + dm - 1) / dm >= (hm + dc -1) / dc (hc+dm−1)/dm>=(hm+dc−1)/dc即 ( h c + d m − 1 ) ∗ d c > = ( h m + d c − 1 ) ∗ d m (hc + dm - 1) * dc >= (hm + dc -1) * dm (hc+dm−1)∗dc>=(hm+dc−1)∗dm即 ( h c − 1 ) ∗ d c > = ( h m − 1 ) ∗ d m (hc - 1) * dc >= (hm - 1) * dm (hc−1)∗dc>=(hm−1)∗dm令 h c = h c − 1 , h m = h m − 1 hc=hc-1,hm=hm-1 hc=hc−1,hm=hm−1,有 h c ∗ d c > = h m ∗ d m hc * dc >= hm * dm hc∗dc>=hm∗dm,为防爆long long,转化为除法 h c / d m > = h m / d c hc / dm >= hm / dc hc/dm>=hm/dc

我们枚举k枚硬币的分配情况,找到其中一种 h c , d c hc,dc hc,dc,能满足 h c / d m > = h m / d c hc / dm >= hm / dc hc/dm>=hm/dc即可。

#include
using namespace std;
#define ll long long
const int maxn = 200010;

ll hc, dc, hm, dm;
ll k, w, a;
void solve() {
	scanf("%lld%lld%lld%lld", &hc, &dc, &hm, &dm);
	scanf("%lld%lld%lld", &k, &w, &a);
	
	--hc;
	--hm;
	
	bool flag = false;
	for (ll i = 0; i = hm / new_dc) {
			flag = true;
			break;
		}
	}
	printf("%s\n", flag ? "YES" : "NO");
	
}
int main()  {
	int t;
	scanf("%d", &t);
	while(t--) {
		solve();
	} 
	return 0;
}
/*
(hc + dm - 1) / dm >= (hm + dc -1) / dc

(hc + dm - 1) * dc >= (hm + dc -1) * dm

(hc - 1) * dc >= (hm - 1) * dm

hc * dc >= hm * dm

hc / dm >= hm / dc


*/
关注
打赏
1664895754
查看更多评论
立即登录/注册

微信扫码登录

0.0393s