如果通过僵硬地涂色来计算单点权重,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; }