codeforces|codeforces 1060 D

https://codeforces.com/contest/1060/problem/D
题意:你可以用1个及以上的圆桌,给n个人排座位,每个人左边需要有Li个空凳子,右边需要有Ri个空凳子,问你最少用多少个凳子
题解:一定要注意可以用多个圆桌,这样其实就是每个人的左边和右边无所谓,只需要求出左边或者右边的最大值即可,然后再加上本人的一个座位。
代码如下:
codeforces|codeforces 1060 D
文章图片
codeforces|codeforces 1060 D
文章图片

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define PI acos(-1) #define eps 1e-8 #define fuck(x) cout<<#x<<" = "< 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>l[i]>>r[i]; } sort(l,l+n); sort(r,r+n); for(int i=0; i
View Code 【codeforces|codeforces 1060 D】

    推荐阅读