题目大意:
初始点在 (A),(n) 个单位时间后在 (B),一个单位时间可上下不超过 (d),问这过程中最高可达多少米。
正文:
方法一:
思路:
可以先跳到够的着 (B) 的位置,再将时间分成两份,一份去够最高点,一份从最高点回 (B)。
代码:
int main()
{
scanf("%lld %lld %lld %lld",&n,&d,&a,&b);
n--;
if (abs(a - b) % d != 0)
{
m = abs(a - b) / d + 1;
n -= m;
if (n % 2 == 1)
{
printf("%lld", min(a, b) + m * d + n / 2 * d);
}
else
{
printf("%lld", max(a, b) + n / 2 * d);
}
}
else
{
printf("%lld", max(a, b) + (n - abs(a - b) / d) / 2 * d);
}
return 0;
}
思路二:
二分最高点。