【画图】暴力,map的使用和自定义比较

map也是基于红黑树的键值比较,因此我们也需要对自定义的结构体key值进行比较;
其他就是点坐标系向矩阵块坐标系的转换,数学上的思路;
由于坐标范围比较小,使用暴力遍历即可;
代码如下:

#include<iostream>
#include<map>
using namespace std;
int n;
struct vertice{
    int x,y;
    bool operator <(const vertice&other)const{
        if(x != other.x)return x < other.x;
        return y < other.y;
    }
};
map<vertice,bool> mp;
int res = 0;

void paint(int x1,int y1,int x2,int y2){
    for(int i = x1;i <= x2; i++){
        for(int j = y1;j <= y2; j++){
            vertice v = {i,j};
            if(!mp.count(v)){
                mp.insert({v,true});
                res++;
            }else{
                continue;
            }
        }
    }
}

int main(){
    cin >> n;
    for(int i = 0;i < n;i++){
        int x1,y1,x2,y2;
        cin >> x1 >> y1 >> x2 >> y2;
        x1++;
        y1++;
        paint(x1,y1,x2,y2);
    }
    cout << res;
}
posted @ 2025-11-29 15:49  q_z_chen  阅读(0)  评论(0)    收藏  举报