1. 程式人生 > >B. Diagonal Walking v.2

B. Diagonal Walking v.2

amp return max ios 移動 分析 () with wap

鏈接

[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;
} 

B. Diagonal Walking v.2