题解 P4122 【[USACO17DEC]Blocked Billboard】
本题的数据范围可以直接模拟。
当这个方格被覆盖的时候,标记该方格左上角的点。
注意点:数据范围为
#include<bits/stdc++.h>
using namespace std;
int m[2200][2200],ans,a,s,d,f;//m为该平面直角坐标系,ans为没有被覆盖的面积
int main()
{
for(int x=1;x<4;x++){
cin>>a>>s>>d>>f;
for(int y=a+1000;y<d+1000;y++)//x坐标 (注意此处是 < 而不是 <= ,因为标记的是点)
for(int z=s+1000;z<f+1000;z++){//y坐标
if(x<3)m[y][z]++,ans++;
if(m[y][z]&&x==3)ans--;//减去重叠部分
}
}
cout<<ans;
return 0;
}