排列计算 差分
排列计算
https://ac.nowcoder.com/acm/contest/5477/F
如果通过僵硬地涂色来计算单点权重,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;
} 算法竞赛之路 文章被收录于专栏
整理、记录算法竞赛的好题

深信服公司福利 845人发布