A. Forked!

发布时间 2023-12-23 16:16:57作者: 纯粹的

原题链接

模拟+去重

代码

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