传送门
题意:
n个人围成一个圈吃饭,每个人都要求自己的左右两边至少有多少座椅,求最少的座椅数量
思路:
第一次做这种题,看了好久没有思路,
仔细想一想,每次挑选左右座椅最大的那个加起来,最后得出的就是最小座椅数量。
因为是一个圈,选择大的那一边,下一次选择就会把另一边给覆盖
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[100005],b[100005];
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i]>>b[i];
}
sort(a,a+n);sort(b,b+n);
long long ans=0;
for(int i=0;i<n;i++)
{
ans+=max(a[i],b[i])+1;
}
cout<<ans<<endl;
return 0;
}
ac代码: