Codeforces 1060D Social Circles 思想转化

文章目录

题意

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

题解

非常好玩的一个题,当然是被大佬轻松秒掉了.
l , r l,r l,r两数组分别排序,输出 n + ∑ i = 1 n max ⁡ ( l [ i ] , r [ i ] ) n+\sum_{i=1}^{n}\max(l[i],r[i]) n+i=1nmax(l[i],r[i]).
然后思考为什么.
某一个 l l l可以和某一个 r r r匹配,匹配的结果是中间小的那个被约掉了,只剩下了大的那个.
那么显然最优的匹配就是最小的 l l l和最小的 r 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;
}

谢谢大家.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值