5 条题解

  • 1
    @ 2024-10-22 0:04:47

    J8A. 竹竿

    思路

    分析题目,可以看出就是求出 nn 个竹竿标记的两边的最大值和第二大值,然后将两个值相加。

    也可以理解为,将 nn 个竹竿从标记处切开,将得到的竹竿中长度最长的两个相加。

    Code

    #include <bits/stdc++.h>
    
    using namespace std;
    
    long long n, a, b, s[10000010], cnt;
    
    int main()
    {
    	scanf("%lld", &n);
    	for (int i = 0; i < n; i ++ )
    	{
    		scanf("%lld %lld", &a, &b);
    		s[cnt ++] = b;
    		s[cnt ++] = a - b;
    	}
    	sort(s, s + cnt);
    	cout << s[cnt - 1] + s[cnt - 2] << '\n';
    	return 0;
    }
    

    信息

    ID
    81
    时间
    3000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    987
    已通过
    231
    上传者