可以发现数据范围很小,可以用模拟来做
#include<bits/stdc++.h>
using namespace std;
int n,sum;
int suby , subx;
const int N=110;
int x1[N],x2[N],ya[N],y2[N];
int main()
{
int n; cin >> n;
for (int i=0;i<n;i++)
{
cin >> x1[i] >> ya[i] >> x2[i] >> y2[i];
}
for (int i=0;i<n;i++)
{
int a = abs(x2[i] - x1[i]);
int b = abs(y2[i] - ya[i]);
if(i!=n-1)
{
subx = abs(x2[i]-x1[i + 1] );
suby = abs( y2[i]-ya[i + 1] );
}
sum = sum + (a * b) ;
}
cout<<sum- (subx * suby);
return 0;
}
y总用的加法:
#include<bits/stdc++.h>
using namespace std;
int n;
const int N=110;
bool st[N][N];
int main()
{
int n; cin >> n;
while(n--)
{
int x1,y1,x2,y2; cin >> x1 >> y1 >> x2 >> y2;
for (int i=x1;i<x2;i++)
{
for(int j=y1;j<y2;j++)
{
st[i][j]=true;
}
}
}
//统计一下所有被染色的格子的数量
int res=0;
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
res+=st[i][j];
}
}
cout<<res<<endl;
return 0;
}