思路:
这本暴力思路是不是很清晰,但是纯暴力这数据范围必t,我们观察发现其实耗时就是标记涂过的地方,所以我们现在将重心放在我们该如何优化上,不卖关子了,其实这是一个非常经典的二维前缀和优化~(具体细节观看代码,稳稳AC)
ACcode:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e3+10;
int n,k,a[N][N],s[N][N];
void solve() {
cin>>n>>k;
for(int i=1;i<=n;i++){
int x1,x2,y1,y2;
cin>>x1>>y1>>x2>>y2;
x1++,x2++,y1++,y2++;//因为我们规定的数组下标从一开始
a[x1][y1]++;
a[x2][y2]++;
a[x1][y2]--;
a[x2][y1]--;
}
int ans=0;
for(int i=1;i<=1000;i++)
for(int j=1;j<=1000;j++){
s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1]+a[i][j];
if(s[i][j]==k)ans++;
}
cout<<ans<<"\n";
}
signed main() {
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int t=1;
//cin>>t;
while(t--) {
solve();
}
return 0;
}
over~