CF1060D Social Circles
作者:互联网
题目描述
现在有N个人,每一个人都不想周围的人坐得离他很近,所以在他的左边至少要放L[i]张椅子,右边至少要放R[i]张椅子.
现在他们要坐成若干个圈,请问最少要放多少张椅子.
注意:可以一个人坐在一个圈内.每一个人还需要坐一张椅子.
输入输出样例
输入
3 1 1 1 1 1 1
输出
6
思路
贪心,贪心策略,对所有左手及右手位置分别排序,再从1~n or n~1 对于排序后的每一对R【i】and L【i】取max并累加即可
AC code
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int n; int L[1000001],R[1000001]; int main(){ cin>>n; for(int i=1;i<=n;i++)cin>>L[i]>>R[i]; sort(L+1,L+n+1); sort(R+1,R+n+1); long long ans=n; for(int i=1;i<=n;i++){ ans+=max(L[i],R[i]); } cout<<ans; return 0; }View Code
标签:Circles,int,long,1000001,Social,CF1060D,include,椅子,要放 来源: https://www.cnblogs.com/Larry-Zero/p/11727317.html