美文网首页
Codeforces #513 D

Codeforces #513 D

作者: hfccccccccccccc | 来源:发表于2018-10-11 16:21 被阅读0次

    http://codeforces.com/problemset/problem/1060/D

    要开一个宴会,可以用若干椅子摆成若干环。每个宾客因为比较害羞所以要求左手边有 L_i 个空位,右手边有 R_i 个空位,问怎么摆桌才能使用的椅子最少,输出最少的椅子数。

    题解

    画一画图会发现摆桌的方案相当于调换一些人的 L_i 和和 R_i,并且是可以瞎比调换的,所以排序一下把 \max(L_i,R_i) 加起来就做完了。

    #include <bits/stdc++.h>
    
    using namespace std;
    typedef long long ll;
    typedef unsigned int uint;
    typedef unsigned long long ull;
    typedef pair<int, int> pii;
    
    int rint() {
        int n, c, sgn = 0;
        while ((c = getchar()) < '-');
        if (c == '-') n = 0, sgn = 1;
        else n = c - '0';
        while ((c = getchar()) >= '0') {
            n = 10 * n + c - '0';
        }
        return sgn ? -n : n;
    }
    
    const int N = 1e5 + 10;
    
    int n;
    int l[N], r[N];
    
    int main() {
        scanf("%d", &n);
        for (int i = 0; i < n; i++) {
            l[i] = rint();
            r[i] = rint();
        }
    
        ll ans = n;
        sort(l, l + n);
        sort(r, r + n);
        for (int i = 0; i < n; i++) {
            ans += max(l[i], r[i]);   
        }
        cout << ans << endl;
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:Codeforces #513 D

          本文链接:https://www.haomeiwen.com/subject/tgibaftx.html