在二维图中,常常遇到一些需要大量坐标运算的题目,这时可以封装一个Point类,实现坐标高效运算。
// #define LOCAL
#include<iostream>
#include<queue>
#include<map>
using namespace std;
#define _for(i,a,b) for(int i = (a); i < (b); i++)
#define _rep(i,a,b) for(int i = (a); i <= (b); i++)// 二维图涉及到坐标加减问题的时候 可以定义Point类
struct Point {int x, y;Point(int x = 0, int y = 0) : x(x) , y(y) {}
};using Vector = Point;
using IPair = pair<int, int> ;Vector operator+(const Vector& v1, const Vector& v2) {return Vector(v1.x+v2.x , v1.y+v2.y);
}Vector operator-(const Vector& v1, const Vector& v2) {return Vector(v1.x-v2.x , v1.y-v2.y);
}Vector operator*(const Vector& v1, const int& k) {return Vector(v1.x*k , v1.y*k);
}Vector operator/(const Vector& v1, const int& k) {return Vector(v1.x/k , v1.y/k);
}bool operator==(const Vector& v1, const Vector& v2) {return v1.x==v2.x && v1.y==v2.y;
}bool inRange(int x, int l, int r) {return (l > r) ? inRange(x, r, l) : (l <= x && x <= r);
}const int N = 100;
Vector dir[] = {{1,1}, {1,-1}, {-1,1}, {-1,-1}};
int n, m, k;bool isValid(Vector& p) {return inRange(p.x, 0, n-1) && inRange(p.y, 0, m-1);
}int readint() {int x; cin >> x; return x;
}constexpr int maxn = 1024;int main() {return 0;
}