原题链接
模拟+去重
代码
#include<bits/stdc++.h>
using namespace std;
int l[4]={1,1,-1,-1},r[4]={1,-1,-1,1};
struct unit
{
int x,y;
bool operator<(const unit& other) const {
return x < other.x || (x == other.x && y < other.y);//set要弱排序
}
};
int main()
{
int t;
cin>>t;
while(t--)
{
int a,b;
set<unit> q;
cin>>a>>b;
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
for(int i=0;i<4;i++)
{
q.insert({x1+l[i]*a,y1+r[i]*b});
q.insert({x1+l[i]*b,y1+r[i]*a});
}
int z=q.size();//有可能一颗棋子只能走4个点
for(int i=0;i<4;i++)
{
q.insert({x2+l[i]*a,y2+r[i]*b});
q.insert({x2+l[i]*b,y2+r[i]*a});
}
printf("%d\n",z*2-q.size());
}
return 0;
}