暴力
实在看不懂y总思路的小白可以参考下
网上的思路:建立一个初始值全为false的布尔二维数组,将其视为一个直角坐标系,每一个点都表示为a[i][j];每一个点的面积为1;则点的数目即面积。对于每次输入的坐标,若对应的区域为false则将对应区域内的bool设为true,若对应的区域为true则不做修改,同时利用累加器记录修改的次数,即值为true的点的个数,即面积。
以下代码在acwing上被卡空间(64M), 只可以过5个数据,蓝桥杯OJ可以过(256M)
C++ 代码
#include<bits/stdc++.h>
using namespace std;
bool a[10010][10010]; //初始为false,表示该面积为1的区域是否在范围内
int main()
{
int n, sum=0;
cin>>n;
for(int i=1; i<=n; i++)
{
int x1, x2, y1, y2;
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
for(int i=x1; i<x2; i++)
for(int j=y1; j<y2; j++) //这里都是小于号,要画图理解下
{
if(!a[i][j])
{
a[i][j] = true;
sum++;
}
}
}
cout<<sum;
return 0;
}
为啥是两个小于号,不等于边界
蓝桥数据量有点弱,这个1e12复杂度,可以用差分矩阵降到1e8, 题目限制2s, 可以过
### 感谢分享
tql
楼主,现在蓝桥aj也有个数据过不了。。
因为蓝桥的数据没有保证x1小于x2,y1小于y2。所以本弱鸡写的话会加判断语句。。。
加了判断语句蓝桥杯是不是就可以 AC 了啊
为什么我加了判断句还是错了
这个应该可以用差分矩阵做吧
差分矩阵应该复杂度也有点高,毕竟最后要计算总的和,和这个暴力应该是差不多的复杂度
麻了
tql 学到了新思路