6 条题解
-
2
第一部分 分析
把题目转换得:一堆竹竿被固定在一个点上,旋转竹竿求覆盖最大区间。 我们可以把竹竿从标记处分成两半,将两端长度扔到一个数组里去,对这个数组排序,最大的两个就是能放到标记点左边和右边能达到的最长长度,加起来就是答案。
第二部分 代码
#include <iostream> #include <algorithm> using namespace std; long long n,a[100010],b[100010],c[100010],cnt; int main() { cin>>n; for(int i=1; i<=n; i++) { cin>>a[i]>>b[i]; c[++cnt]=a[i]-b[i]; c[++cnt]=b[i];//记录两端长度 } sort(c+1,c+cnt+1);//排序 cout<<c[cnt]+c[cnt-1];//输出答案 return 0; }
信息
- ID
- 81
- 时间
- 3000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 1027
- 已通过
- 251
- 上传者