ZCMU--5158: 骷髅军团
创始人
2025-05-28 21:14:09

Description

出题人的徒弟 lcw 最近在玩皇室战争,他召唤了骷髅军团来进攻对方的公主塔。

公主塔的生命值为 hp,攻击力为 atk,骷髅军团一共有 n个骷髅,每个骷髅的生命值为 h,攻击力为 a。

从第一秒开始,每一秒的前半秒,每只骷髅都会对公主塔进行一次攻击,使之 hp 减少 a;后半秒,公主塔对某一个骷髅进行一次攻击,对其造成 atk 的伤害,一个骷髅会死去当且仅当其生命值减到 0 或负数,骷髅死去后不会继续攻击。

公主塔会采取最优的策略以争取时间,国王塔会在第 t 秒的后半秒释放一个火球术,届时所有骷髅都会被消灭。

lcw 想知道对方的公主塔最后能否被骷髅军团摧毁(即生命值是否减到 ≤0)。

Input

第一行一个正整数 T 表示有多少组测试数据;

接下来 T 行,每行六个正整数 hp,atk,n,h,a,t。

测试点编号hpatk,n,h,a,t特殊约定
1,2,3≤10≤10
4,5,6≤1012≤40000atk≥h
7,8,9,10≤1012≤40000

对于全部测试点 T≤10^5。

Output

T 行,每一行输出"Yes""No"表示对方的公主塔能否被摧毁。

Sample Input

2
5 1 3 2 1 3
9 1 3 2 1 3

Sample Output

Yes
No

解析:推数学公式,先算杀一只需要多少秒,然后第1~k秒会受到a*n的伤害,k+1~2k+1秒会受到a*(n-1),以此类推一共t/k组都是满足k个,如果最后一组会剩下t%k个,然后计算一下伤害值,累加判断是否小于hp。

不过需要先判断是否火球来之前就已经消灭全部,上面推的公式只适用于火球来的时候还剩有骷髅。

#include 
const int N=1e5+5;
typedef long long ll;
void solve()
{ll hp,v,n,h,a,t;scanf("%lld%lld%lld%lld%lld%lld",&hp,&v,&n,&h,&a,&t);ll k=(h-1)/v+1,m=t/k,sum;//k表示杀一只所需时间if(k*n<=t) sum=((n*n+n)/2)*a*k;//如果火球来之前能直接杀完else sum=(m*n*a-a*((m*m-m)/2))*k+(n-m)*a*(t%k);if(hp>sum) printf("No\n");else printf("Yes\n");
}
int main()
{int t;scanf("%d",&t);while(t--) solve();return 0;
}

相关内容

热门资讯

聚焦户外作业装备领域,鑫源智造... (图源:公司供图)近日,刚刚更名的鑫源智造(原名“丰华股份”,600615.SH)发布亮眼成绩单,上...
AR眼镜的四大核心痛点,未来的... 文 | 互联网江湖,作者 | 志刚2025年智能眼镜可能将迎来一次爆发式的增长。根据IDC、Coun...
Air一出,Plus退场:苹果... 文 | 高见观潮三年一小改、五年一大改,是苹果产品周期的铁律。每当这种时间点临近,就像年轮悄悄转过,...
买量素材出海史:国产游戏如何用... 文 | 有点数,作者 | 有叔如果你持续关注中国手游出海收入排行榜,就会发现一个耐人寻味的现象:不仅...
京东、美团、盒马的“硬折扣”博... 文 | 市值榜,作者 | 竹铭,编辑 | 何玥阳八月的河北涿州热浪袭人,但比天气更热的,是当地君悦广...