社区讨论
ABC434 D题求条
题目总版参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mil4zqjv
- 此快照首次捕获于
- 2025/11/30 11:04 3 个月前
- 此快照最后确认于
- 2025/12/02 16:35 3 个月前
rt
CPP#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 2e3+59;
int n, scnt[N][N], si[N][N], x[N];
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
int u, d, l, r;
cin >> u >> d >> l >> r;
//计算个数
scnt[u][l]++;
scnt[u][r + 1]--;
scnt[d + 1][l]--;
scnt[d + 1][r + 1]++;
//计算每个格子覆盖云朵编号的和
si[u][l] += i;
si[u][r + 1] -= i;
si[d + 1][l] -= i;
si[d + 1][r + 1] += i;
}
//计算前缀和
for (int i = 0; i <= 2025; i++) {
for (int j = 1; j <= 2025; j++) {
scnt[i][j] += scnt[i][j - 1];
si[i][j] += si[i][j - 1];
}
}
for (int i = 1; i <= 2025; i++) {
for (int j = 0; j <= 2025; j++) {
scnt[i][j] += scnt[i - 1][j];
si[i][j] += si[i - 1][j];
}
}
int sum = 0;
for (int i = 1; i <= 2000; i++) {
for (int j = 1; j <= 2000; j++) {
if (scnt[i][j] == 0)
sum++;
if (scnt[i][j] == 1)
x[si[i][j]]++;
}
}
for (int i = 1; i <= n; i++)
cout << sum + x[i] << endl;
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...