原题链接:https://www.luogu.com.cn/problem/P2161
题意解读:本题前面形式化描述已经足够清晰。
解题思路:
要判断线段之间是否有冲突(包含或者交叉),可以借助set,参考:https://www.cnblogs.com/jcwy/p/18447333
只不过这里要统计冲突的数量,也就是允许相等的元素重复存在,可以借助multiset
其他内容就没什么可说,STL一顿操作拿下!
100分代码:
#include <bits/stdc++.h>
using namespace std;const int N = 200005;
int n;struct Range
{int l, r;bool operator < (const Range &range) const &{return r < range.l;}
};
multiset<Range> tr;int main()
{cin >> n;char op;int x, y;while(n--){cin >> op;if(op == 'A'){cin >> x >> y;Range r = {x, y};cout << tr.count(r) << endl;tr.erase(r);tr.insert(r);}else cout << tr.size() << endl;}return 0;
}