比较一眼的题目,场切了。
分别考虑 \(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";
}
}
标签:lceil,frac,题解,ll,Frog,CF2009C,方向,跳跃,rceil
From: https://www.cnblogs.com/cly312/p/18444981