The Preliminary Contest for ICPC Asia Shanghai 2019 B. Light bulbs
题目
有n盏灯,初始都是灭的状态,m次操作,每次操作将一个区间的灯状态改变,问最终操作完成后几盏灯是亮着的。
分析
注意到 1e3 的样例,n 最大 1e6,就是说 On 会超时,
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define fuck(x) cout << (x) << endl
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 1e5 + 10;
int t, n, q;
int a[2220], f[N];
map<int, int> mp;
int main(){
scanf("%d", &t);
for(int cas = 1; cas <= t; cas++){
mp.clear();
memset(a, 0, sizeof(a));
scanf("%d%d", &n, &q);
int l, r;
while(q--){
scanf("%d%d", &l, &r);
l++;
r++;
mp[l]++;
mp[r + 1]--;
}
int ans = 0;
int ii = 1;
map<int, int>::iterator it = mp.begin();
int tmp = it->first;
a[ii] = it->second;
it++;
ii++;
for(; it != mp.end(); it++, ii++){
a[ii] = a[ii - 1] + it->second;
if(a[ii-1] & 1)
ans += (it->first - tmp);
tmp = it->first;
}
printf("Case #%d: %d\n", cas, ans);
}
return 0;
}