题解:SP30692 ADARAINB - Ada and Rain II
lyx20131111 · · 题解
题目大意
记录
思路
既然是填充某个矩阵, 第一种方法便是输入一个, 就填充。但是如果是这种方法的话,很明显, 数据是不支持这样做的。
这时我们就可以用差分 + 前缀和的思路做。接下来我将介绍差分和前缀和, 学过的同学可以跳过。
:::info[差分和前缀和]
学习视频
:::
:::success[code]
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int n, m, l, mp[10005][10005];
int main(){
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n >> m >> l;
int sx, sy, ex, ey;
for(int i = 1;i <= n;i++){
cin >> sx >> sy >> ex >> ey;
mp[sx][sy] += 1;
mp[ex][sy + 1] -= 1;
mp[ex + 1][sy] -= 1;
mp[ex + 1][ey + 1] += 1;
}
for(int i = 1;i <= l;i++){
for(int j = 1;j <= l;j++){
mp[i][j] = mp[i - 1][j] + mp[j - 1] - mp[i - 1][j - 1] + mp[i][j];
}
}
int x, y;
while(m--){
cin >> x >> y;
cout << mp[x][y];
}
return 0;
}
:::