1 条题解
-
0
差分
先求出所有操作都执行时, 库存量为 的商品的种类数,然后分别求每个操作不执行时贡献的变化。
如果操作不执行,则可能多的贡献为:原本库存量为 的变成 了。 那我们可以用商品库存量为 的前缀和来计算。
#include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int, int> PII; #define x first #define y second const int N = 1e3 + 10, mod = 998244353; void solve() { int n, m; cin >> n >> m; vector<PII> v(m + 1); vector<int> d(n + 1); for(int i = 1; i <= m; i ++) { cin >> v[i].x >> v[i].y; d[v[i].x] ++, d[v[i].y + 1] --; } int ans = 0; for(int i = 1; i <= n; i ++) { d[i] += d[i - 1]; if(d[i] == 0) ans ++; } for(int i = 1; i <= n; i ++) { if(d[i] != 1) d[i] = 0; d[i] += d[i - 1]; } for(int i = 1; i <= m; i ++) { auto [l, r] = v[i]; cout << ans + d[r] - d[l - 1] << endl; } } int main(){ int t = 1; // cin >> t; while(t --) solve(); }
- 1
信息
- ID
- 336
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 15
- 已通过
- 7
- 上传者