1 solutions
-
1
想通了就是水题
仔细读完题的你,就会发现这是一道在区间内修改值并在最后查询某一个值的数量的题目
看到加粗的东西了吗?
想到用差分来做了吗?
其实只需要分别储存三原色的差分数组最后查询有多少个值是有黄色、有蓝色,但没有红色的就行了。
AC 奉上
#include <iostream> using namespace std; int n, m; // Times int c[4][1000005], a[4][1000005]; // ColorData int l, r, k; // Every Times int ans; // Answer int main() { cin >> n >> m; for (int i = 1; i <= m; i++) { cin >> l >> r >> k; c[k][l]++; c[k][r + 1]--; } for (int i = 1; i <= n; i++) { a[1][i] = a[1][i - 1] + c[1][i]; a[2][i] = a[2][i - 1] + c[2][i]; a[3][i] = a[3][i - 1] + c[3][i]; if (a[1][i] > 0 && a[2][i] > 0 && a[3][i] == 0) { ans++; } } cout << ans << "\n"; return 0; }
- 1
Information
- ID
- 8318
- Time
- 2500ms
- Memory
- 256MiB
- Difficulty
- 2
- Tags
- # Submissions
- 3
- Accepted
- 3
- Uploaded By