1 条题解

  • 0
    @ 2025-7-27 5:02:06

    O(1)O(1)

    首先独立考虑横纵坐标,要走的距离分别为 xa\left|{x - a}\right|yb\left|{y - b}\right| ,移动次数以长边(更大的一边)为主,那么最大的移动次数为 max(x,y)2\lceil{\frac{max(x, y)}{2}}\rceil

    再考虑长边到达后,短边是否一定能到达?

    特殊情况:长边不为 00 ,短边为 00 时,至少要两次才能到达。因为如果长边需要移动,那么短边至少走动距离为1,需要再走回来,并且大于等于两次的移动次数一定能够走回来。 所以在长边为 11 短边为 00 时需要移动两次。

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int main(){
    	int T; cin>>T;
    	while(T--){
    		int x,y,a,b;
    		cin>>x>>y>>a>>b;
    		int D=abs(x-a),Q=abs(y-b);
    		if(D>Q) swap(D,Q);
    	    int ans = (Q + 1) / 2;
    	    if(D == 0 && ans == 1) ans ++;
    	    cout << ans << endl;
    	}
    }
    
    • 1

    信息

    ID
    429
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    26
    已通过
    5
    上传者