[CF1060D] Social Circles

Description

现在有 $ N $ 个人,每一个人都不想周围的人坐得离他很近,所以在他的左边要放 $ L_i $ 张椅子,右边要放 $ R_i $ 张椅子,现在他们要坐成若干个圈,请问最少要放多少张椅子。

Solution

左右手数目分别排序后,答案即为 (n+sum max(l_i,r_i))

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N = 1000005;

int n,a[N],b[N];

signed main() {
    ios::sync_with_stdio(false);
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i]>>b[i];
    sort(a+1,a+n+1);
    sort(b+1,b+n+1);
    int ans=0;
    for(int i=1;i<=n;i++) ans+=max(a[i],b[i]);
    cout<<ans+n;
}
原文地址:https://www.cnblogs.com/mollnn/p/12961634.html