地址:http://codeforces.com/contest/1332
题意:一只猫,给出各个方向走多少次。给出初始坐标以及限制范围。不论走法,问是否会越界。
解析:这个题比较坑,比如样例二,如果只把猫限制到一条竖线或者一条横线上,那么只要存在左右走或上下走,一定会越界,这些一定要进行特判。其他的就进行左右抵消走,上下抵消走就可以了,能保证不出范围即可。
#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; }