题解:CF2009C The Legend of Freya the Frog

比较一眼的题目,场切了。

分别考虑 \(x\)\(y\)。在 \(x\) 方向上我们需要的跳跃次数是 \(\lceil \frac{x}{k} \rceil\),在 \(y\) 方向上我们需要的跳跃次数是 \(\lceil \frac{y}{k} \rceil\)。考虑下面的两种情况:

  • \(\lceil \frac{y}{k} \rceil \geq \lceil \frac{x}{k} \rceil\)。在这种情况下,需要在 \(y\) 方向上有 \(\lceil \frac{y}{k} \rceil - \lceil \frac{x}{k} \rceil\) 额外的跳跃。当青蛙跳跃时,它将选择 \(x\) 方向的 \(d = 0\)。所以总共需要 \(2 \cdot \lceil \frac{y}{k} \rceil\) 个跳跃。

  • \(\lceil \frac{y}{k} \rceil < \lceil \frac{x}{k} \rceil\)。同理,但是由于青蛙最初面向 \(x\) 方向,所以最后一次跳跃不需要向 \(y\) 方向。总共需要 \(2 \cdot \lceil \frac{x}{k} \rceil - 1\) 个跳跃。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
	int t;
	cin>>t;
	while(t--){
		ll x,y,k;
		cin>>x>>y>>k;
		ll a=(x+k-1)/k;
		ll b=(y+k-1)/k;
		ll m;
		if(a>b)
			m=2*a-1;
		else
			m=2*b;
		cout<<m<<"\n";
	}
}
posted @ 2024-10-02 18:57  cly312  阅读(42)  评论(0)    收藏  举报