CF E 题求调
  • 板块学术版
  • 楼主Micnation_AFO
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/8/31 02:27
  • 上次更新2023/10/27 13:00:38
查看原帖
CF E 题求调
574944
Micnation_AFO楼主2022/8/31 02:27

rt。代码:

#include <iostream>
#include <cstring>

using namespace std;

#define int long long

const int N = 100010;
const int M = 1010;

struct Range {
    int h, w;
} a[N];

int T, n, q;
int f[M][M], f1[M][M];
int t[M][M];

void init() {
    memset(a, 0, sizeof(a));
    memset(f, 0, sizeof(f));
    memset(f1, 0, sizeof(f1));
    memset(t, 0, sizeof(t));
}

void solve() {
    for (int i = 1; i <= 1000; i++)
        for (int j = 1; j <= 1000; j++) f[i][j] = f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1] + t[i - 1][j - 1] * (i - 1) * (j - 1);
    for (int i = 1; i <= q; i++) {
        int h, w, hh, ww;
        cin >> h >> w >> hh >> ww;
        cout << f[hh][ww] - f[max(h, w) + 1][max(h, w) + 1] << endl;
    }
}

signed main() {
    cin >> T;
    while (T--) {
        cin >> n >> q;
        init();
        for (int i = 1; i <= n; i++) cin >> a[i].h >> a[i].w, t[a[i].h][a[i].w]++;
        solve();
    }
}

思路:令 fi,jf_{i, j} 表示 hh 小于 hih_iww 小于 wiw_i 的数量,显然有:

fi,j=fi1,j+fi,j1fi1,j1+ti1,j1×(i1)×(j1)f_{i, j} = f_{i - 1, j} + f_{i, j - 1} - f_{i - 1, j - 1} + t_{i - 1, j - 1} \times (i - 1) \times (j - 1)

其中,ti1,j1t_{i - 1, j - 1} 表示 hhi1i - 1wwj1j - 1 的矩形出现的次数。

但是不知道为什么,Wrong Answer on text 2 了,求助。

2022/8/31 02:27
加载中...