在二维图中,常常遇到一些需要大量坐标运算的题目,这时可以封装一个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;
}