洛谷 CF652A 题解

题目传送门


题意:

有一只毛毛虫,从高度为 \(h1\) 的地方爬到高度为 \(h2\) 的地方。它在白天每小时上升 \(a\) 厘米,晚上每小时下掉 \(b\) 厘米。问到第几天的下午 \(2\) 点及以前,毛毛虫能到达 \(h2\)


思路:

这道题就是简单的分类讨论,有以下几种情况:

  • 永远无法到达,即下降速度大于等于上升速度并且在第一天白天无法爬到终点,输出 \(-1\)

code:

	if(a<=b && h1+a*8<h2){
		cout<<-1<<endl;
	}
  • 在第一天白天就可以到达,不用判断晚上,输出 \(0\)

code:

	else if(h1+8*a >= h2){
		cout<<0<<endl;
	} 
  • 直接模拟每天的情况,直到到达 \(h2\) 为止,最后输出爬的天数即可。

code:

	else{
		long long day=1;
		h1+=a*8-12*b+12*a;
		while(h1<h2){
			h1+=a*12;
			h1-=b*12;
			day++;
		} 
		cout<<day<<endl;
	}
posted @ 2022-03-06 18:41  Black--Panda  阅读(68)  评论(0编辑  收藏  举报