[codeforces 1354A] Alarm Clock 难在题意的解读

Educational Codeforces Round 87 (Rated for Div. 2)  参与排名人数11499,比赛前遇到2次延时,17:05-17:15,17:15-17:20

[codeforces 1354A]   Alarm Clock   难在题意的解读

总目录详见https://blog.csdn.net/mrcrack/article/details/103564004

在线测评地址http://codeforces.com/contest/1354/problem/A

ProblemLangVerdictTimeMemory
A - Alarm Clock GNU C++17Accepted15 ms3600 KB

结合样例,来来回回,好几次,才读懂题意,

对样例解读如下

10 3 6 4

目标:至少休息够10分钟
3分钟后,闹钟响,此时,休息了3分钟
之后,6分钟,闹钟响,入睡需要4分钟,此时,休息了6-4=2分钟
再之后,6分钟,闹钟响,入睡需要4分钟,此时,休息了6-4=2分钟
再之后,6分钟,闹钟响,入睡需要4分钟,此时,休息了6-4=2分钟
再之后,6分钟,闹钟响,入睡需要4分钟,此时,休息了6-4=2分钟

总共休息了3+2+2+2+2=11>=10,共耗时3+6+6+6+6=27


5 9 4 10
目标:至少休息够5分钟
9分钟后,闹钟响,此时,休息了9分钟
9>5,共耗时9,无需闹钟继续响

6 5 2 3
目标:至少休息够6分钟
5分钟后,闹钟响,此时,休息了5分钟
之后,2分钟,闹钟响,入睡需要3分钟,此时,因2<=3,休息了0分钟
再之后,2分钟,闹钟响,入睡需要3分钟,此时,因2<=3,休息了0分钟
再之后,2分钟,闹钟响,入睡需要3分钟,此时,因2<=3,休息了0分钟
再之后,2分钟,闹钟响,入睡需要3分钟,此时,因2<=3,休息了0分钟
......

总共休息了5+0+0+0+0+......<6,无法实现休息6分钟
输出-1

明白题意后,编码就容易了,AC代码如下

#include <stdio.h>
#define LL long long
LL a,b,c,d,ans;
int main(){
	int t;
	scanf("%d",&t);
	while(t--){
		scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
		if(a<=b){printf("%lld\n",b);continue;}
		//a>b
		ans=0,a-=b,ans+=b;
		if(c<=d){printf("-1\n");continue;}
		ans+=(a-1+(c-d))/(c-d)*c;//(a-1+(c-d))/(c-d)等同于a/(c-d)向上取整,如3/2向上取整,结果是2
		printf("%lld\n",ans);
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值