【画图】暴力,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;
}

浙公网安备 33010602011771号