CF1060D Social Circle 排序
2024-09-21 05:19:04
题意:有$N$个人,你要让他们坐成若干个圆环。他们每个人需要坐一把椅子,左手边至少要有$l_i$个空椅子,右手边至少要有$r_i$个空椅子,问最少需要多少个椅子。$N \leq 10^5 \,,\, l_i,r_i \leq 10^9$
没有很好想,但也不难。
贪心地考虑什么样的人会坐在相邻位置会使得答案最优,一定是一个人的左手与另一个人的右手相差较小时较好,因为这样子重复利用的椅子数量更多。那么我们可以由此获得贪心策略:对左手与右手分别排序,然后求$\sum\limits_{i=1}^n max(l_i,r_i)$即可。这里$l_i$与$r_i$的搭配就相当于两个人相邻而坐。
贪心地考虑什么样的人会坐在相邻位置会使得答案最优,一定是一个人的左手与另一个人的右手相差较小时较好,因为这样子重复利用的椅子数量更多。那么我们可以由此获得贪心策略:对左手与右手分别排序,然后求$\sum\limits_{i=1}^n max(l_i,r_i)$即可。这里$l_i$与$r_i$的搭配就相当于两个人相邻而坐。
#include<bits/stdc++.h> #define MAXN 100010 using namespace std; int numL[MAXN] , numR[MAXN]; int main(){ int N; cin >> N; ; i <= N ; i++) cin >> numL[i] >> numR[i]; sort(numL + , numL + N + ); sort(numR + , numR + N + ); long long ans = N; ; i <= N ; i++) ans += max(numL[i] , numR[i]); cout << ans; ; }
最新文章
- Design Tiny URL
- new和alloc的区别
- 【linux】关于TCP三次握手和四次挥手
- c# 常用正则
- oracle communities
- CentOS_6.5 64位系统,安装git服务器+客户端
- SecureCRTPortable的安装和使用
- Implement Stack using Queues 解答
- 算法分析-leedcode正则题目
- JAVA中IO和NIO的详解分析,内容来自网络和自己总结
- a里面不能嵌套a
- Python面向对象编程(二)
- jquery四种监听事件的区别
- 【安全测试自学】初探web安全处测试(二)
- 图解Python的直接赋值与浅拷贝和深度拷贝三者区别
- phpcms中set_config和get_sysinfo函数
- R实战 第十篇:列联表和频数表
- python3中的新式类mro查看和C3算法原理
- Hihocoder之conv2d()
- Java类集框架——List接口
热门文章
- struts2文件上传大小限制问题小结(引用)
- 使用node.js进行API自动化回归测试
- 超级干货 :一文读懂数据可视化 ZT
- AngularJS ui-router刷新子页面路由
- 腾讯云部署golang flow流程,vue.js+nginx+mysql+node.js
- (后端)shiro:Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
- [20180614]删除bootstrap$记录无法启动2.txt
- [20180316]为什么不使用INDEX FULL SCAN (MIN/MAX).txt
- c#事务处理(sqlTransaction)
- Node.js中文乱码解决方法