- bitset是一种优秀的位域实现,时空效率均有优化,可以取代大部分bool数组。
- 如果要用到bitset某一位的值,应当调用
st.test(3)
而非直接调用[]
运算符进行下标访问 - 全局变量里的bitset可以直接访问读写,和bool数组一样初始化为了0。
#include <bits/stdc++.h>
#define sc(x) scanf("%d", &(x))
#define pr(x) printf("%lld\n", (x))
#define rep(i, l, r) for (int i = (l); i <= (r); ++i)
using namespace std;
typedef long long ll;
const int N = 1e5 + 7;
const int mod = 1e9 + 7;
typedef pair<int, int> pii;
pii a[N];
unordered_map<int, int> pos;
vector<int> ori;
int vis[N >> 1];
int main() {
int n, m;
sc(n), sc(m);
rep(i, 1, m) sc(a[i].first), sc(a[i].second);
// 离散化
rep(i, 1, m) {
ori.emplace_back(a[i].first);
// ori.emplace_back(a[i].second);
ori.emplace_back(a[i].second + 1);
}
sort(ori.begin(), ori.end());
ori.erase(unique(ori.begin(), ori.end()), ori.end());
int sz = ori.size();
for (int i = 0; i < sz; ++i) pos[ori[i]] = i;
// 差分 前缀和
rep(i, 1, m) {
vis[pos[a[i].first]]++;
vis[pos[a[i].second + 1]]--;
}
int tot = N >> 1;
rep(i, 1, tot) vis[i] += vis[i - 1];
return 0;
}