如果通过僵硬地涂色来计算单点权重,2e5*2e5必然TLE。
差分+前缀和可以完美地解决这个问腿。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=200005;
ll num[N];
int main() {
ll n, m ;
cin >> n >> m;
while (m--) {
ll l , r ;
cin >> l >> r;
num[l]++;
num[r + 1]--;
}
for (int i = 2; i <= n; ++i) num[i] += num[i - 1];
sort(num + 1, num + 1 + n);
ll ans = 0;
for (int i = 1; i <= n; ++i) ans += i * num[i];
cout << ans << endl;
return 0;
} 
京公网安备 11010502036488号