[GDCPC2023] New Houses 题解
Link.
为了使问题简单化,我们首先假设所有人都没有邻居。
然后考虑
所以将
我们首先要考虑所有人都没有邻居,即
然后考虑
此时总满意度是
最后在
希望没有人提出
时间复杂度
const int N = 5e5 + 5;
int a[N], b[N], c[N];
void solve(){
int n, m;
cin >> n >> m;
ll t = 0;
for (int i = 1; i <= n; i ++ ){
cin >> a[i] >> b[i];
t += b[i];
}
for (int i = 1; i <= n; i ++ )
c[i] = a[i] - b[i];
sort (c + 1, c + 1 + n, greater<int>());
ll ans = 0;
if (2 * n - 1 <= m)
ans = t;
t += c[1];
for (int k = 2; k <= n; k ++ ){
t += c[k];
if (2 * n - k <= m)
ans = max(ans, t);
}
cout << ans << '\n';
}