Codeforces 1060D Social Circles 思想转化

文章目录

题意

n , . l , r . . ( ) 有n个人,坐成若干个圈.\newline每个人要求左边有l张空椅子,右边有r张空椅子.\newline 求至少要多少张椅子.(每人自己需要坐一个椅子)

题解

非常好玩的一个题,当然是被大佬轻松秒掉了.
l , r l,r 两数组分别排序,输出 n + i = 1 n max ( l [ i ] , r [ i ] ) n+\sum_{i=1}^{n}\max(l[i],r[i]) .
然后思考为什么.
某一个 l l 可以和某一个 r r 匹配,匹配的结果是中间小的那个被约掉了,只剩下了大的那个.
那么显然最优的匹配就是最小的 l l 和最小的 r r 匹配,以此类推.
请注意是坐若干个圈,每个人当然有和自己匹配的可能.
在我所在的room有橙名大佬被神仙zhangzy hack了.
我一看他的代码.噗!没开long long!
这种错误真是我都笑出来了,连橙名大佬都会犯的错误大家一定要注意了.

typedef long long ll;
const int yuzu=1e5;
typedef int fuko[yuzu|10];
fuko l,r;
int main(){
  int i,n=read();
  for (i=1;i<=n;++i) l[i]=read(),r[i]=read();
  sort(l+1,l+n+1),sort(r+1,r+n+1);
  ll llx=n;
  for (i=1;i<=n;++i) llx+=max(l[i],r[i]);
  cout<<llx<<endl;
}

谢谢大家.

猜你喜欢

转载自blog.csdn.net/qq_31908675/article/details/83021320