B. Diagonal Walking v.2

链接

[https://i.cnblogs.com/EditPosts.aspx?opt=1]

题意

二维平面从原点出发k步,要到达的点(x,y),每个位置可以往8个方位移动,问到达目的地最多可以走多少斜路
如果不可以到达输出-1;

分析

找规律,看代码自己琢磨

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    ll q,x,y,k;
    cin>>q;
    while(q--){
        cin>>x>>y>>k;
        if(max(x,y)>k) {
            cout<<-1<<endl;
            continue;
        }
        if(x>y) swap(x,y);
        if((y-x)&1) k--;
        else if((k-y)&1) k-=2;
        cout<<k<<endl;
    }
    return 0;
} 

猜你喜欢

转载自www.cnblogs.com/mch5201314/p/9879710.html