rt,有一道题目它给了 n 条线段,每条线段都有 左端点 li 和右端点 ri,现在让你把所有线段覆盖的数都加 1,即对于任意 li,ri,al,al+1......ar 都加上一,(数组 a 初始为 0 )。
然后然你求 max(a),即数组 a 的最大值。
但 ri≤109,明显开不下数组,但 std 中通过如下代码实现:
map<int,int>c;
for (int i = 1; i <= n; i++) {
cin >> l[i] >> r[i];
c[l[i]]++;
c[r[i] + 1]--;
}
int res = 0,ans = INT_MIN;
for(auto to : c){
int val = to.second;
res += val;
ans = max(ans,res);
}
便实现了,想问这个原理是啥,map是如何用 auto 来遍历的,还有本蒟蒻想仿照这样找最小值,却都是 0,请求 dalao 解答。