Codeforces Round #630 (Div. 2) A. Exercising Walk(思维)

     题意:一只猫,给出各个方向走多少次。给出初始坐标以及限制范围。不论走法,问是否会越界。

      解析:这个题比较坑,比如样例二,如果只把猫限制到一条竖线或者一条横线上,那么只要存在左右走或上下走,一定会越界,这些一定要进行特判。其他的就进行左右抵消走,上下抵消走就可以了,保证不出范围即可。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        ll a,b,c,d;
        cin>>a>>b>>c>>d;
        ll x,y,x1,y1,x2,y2;
        cin>>x>>y>>x1>>y1>>x2>>y2;
        if(a<b)
        {
            ll m1=b-a;
            x=x+m1;
        }
        else
        {
            ll m1=a-b;
            x=x-m1;
        }
        if(c>d)
        {
            ll m1=c-d;
            y=y-m1;
        }
        else
        {
            ll m1=d-c;
            y=y+m1;
        }
        if((x1==x2)&&(a>0||b>0))
            cout<<"No"<<endl;
        else if((y1==y2)&&(c>0||d>0))
            cout<<"No"<<endl;
        else if(x>=x1&&x<=x2&&y>=y1&&y<=y2)
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;
    }
return 0;
}

猜你喜欢

转载自www.cnblogs.com/liyexin/p/12623711.html