• codeforces 1060 D


    https://codeforces.com/contest/1060/problem/D

    题意:你可以用1个及以上的圆桌,给n个人排座位,每个人左边需要有Li个空凳子,右边需要有Ri个空凳子,问你最少用多少个凳子

    题解:一定要注意可以用多个圆桌,这样其实就是每个人的左边和右边无所谓,只需要求出左边或者右边的最大值即可,然后再加上本人的一个座位。

    代码如下:

    #include <map>
    #include <set>
    #include <cmath>
    #include <ctime>
    #include <stack>
    #include <queue>
    #include <cstdio>
    #include <cctype>
    #include <bitset>
    #include <string>
    #include <vector>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <functional>
    #define PI acos(-1)
    #define eps 1e-8
    #define fuck(x) cout<<#x<<" = "<<x<<endl;
    #define FIN freopen("input.txt","r",stdin);
    #define FOUT freopen("output.txt","w+",stdout);
    //#pragma comment(linker, "/STACK:102400000,102400000")
    using namespace std;
    typedef long long LL;
    typedef pair<int, int> PII;
    const int maxn = 1e5+5;
    const int INF = 0x3f3f3f3f;
    const int MOD = 1e9+7;
    LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}
    LL lcm(LL a,LL b){return a/gcd(a,b)*b;}
    LL powmod(LL a,LL b,LL MOD){LL ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
    double dpow(double a,LL b){double ans=1.0;while(b){if(b%2)ans=ans*a;a=a*a;b/=2;}return ans;}
    int l[maxn];
    int r[maxn];
    int main(){
    #ifndef ONLINE_JUDGE
        FIN
    #endif
        int n;
        LL ans=0;
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>l[i]>>r[i];
        }
        sort(l,l+n);
        sort(r,r+n);
        for(int i=0;i<n;i++){
                ans+=(LL)max(l[i],r[i])+1;
        }
        cout<<ans<<endl;
    }
    View Code
    每一个不曾刷题的日子 都是对生命的辜负 从弱小到强大,需要一段时间的沉淀,就是现在了 ~buerdepepeqi
  • 相关阅读:
    oracle循环语句
    解决使用Properties读取中文乱码问题
    oracle常用& to_date()怎么转换带am pm的时间格式
    distinct 多列详解
    javascript中遍历EL表达式List集合中的值
    最近一段时间代码汇总
    JAVA基础之对象的初始化
    求解圆圈中最后剩下的数字
    删除有序链表中的重复结点
    构造二叉树,并求解树的高度
  • 原文地址:https://www.cnblogs.com/buerdepepeqi/p/9745426.html
Copyright © 2020-2023  润新知