社区讨论

悬小号 1 关求调

P3801红色的幻想乡参与者 2已保存回复 12

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
12 条
当前快照
1 份
快照标识符
@mhj3kqmh
此快照首次捕获于
2025/11/03 20:09
4 个月前
此快照最后确认于
2025/11/03 20:44
4 个月前
查看原帖
0pts codeCPP
#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N = 1e5 + 5;

int n, m, q;
int tr[2][N];
bool vis[2][N];

void add(int id, int pos){
    while (pos <= (id == 0 ? n : m)){
        tr[id][pos] += (vis[id][pos] ? -1 : 1);
        pos += pos & (-pos);
    }
    vis[id][pos] = !vis[id][pos];
}

int sum(int id, int pos){
    int res = 0;
    while (pos){
        res += tr[id][pos];
        pos -= pos & (-pos);
    }
    return res;
}

signed main(){
    cin >> n >> m >> q;
    while (q -- ){
        int op; cin >> op;
        if (op == 1){
            int x, y; cin >> x >> y;
            add(0, x), add(1, y);
        }
        else{
            int x1, x2, y1, y2; cin >> x1 >> y1 >> x2 >> y2;
            int _a = sum(0, x2) - sum(0, x1 - 1);
            int _b = sum(1, y2) - sum(1, y1 - 1);
            cout << _a * (y2 - y1 + 1) + _b * (x2 - x1 + 1) - 2 * _a * _b << "\n";
        }
    }
}

回复

12 条回复,欢迎继续交流。

正在加载回复...