1 条题解
-
0
文字教学
要解决这个问题,核心是判断每罐油漆是否恰好含有黄色和蓝色颜料,且不含红色颜料(绿色的混合条件)。由于数据规模大(),我们用差分法高效处理区间更新:
- 为三种颜料各开一个差分数组,记录区间添加操作。
- 对每个颜料的差分数组计算前缀和,若前缀和 ,说明该位置被添加过此颜料至少一次。
- 遍历所有位置,统计满足“有黄色、有蓝色、无红色”的位置数量。
代码
#include <bits/stdc++.h> using namespace std; const int N = 1e6 + 10; int d1[N], d2[N], d3[N]; int main() { ios::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >> m; while (m--) { int l, r, k; cin >> l >> r >> k; if (k == 1) { d1[l]++; d1[r + 1]--; } else if (k == 2) { d2[l]++; d2[r + 1]--; } else { d3[l]++; d3[r + 1]--; } } int s1 = 0, s2 = 0, s3 = 0, ans = 0; for (int i = 1; i <= n; ++i) { s1 += d1[i]; s2 += d2[i]; s3 += d3[i]; if (s1 > 0 && s2 > 0 && s3 == 0) ans++; } cout << ans << endl; return 0; }
- 1
信息
- ID
- 8187
- 时间
- 2500ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 3
- 已通过
- 2
- 上传者
京公网安备 11011102002149号