1 条题解
-
0
自动搬运
来自洛谷,原作者为

cff_0102
& aqua_qaq | 团子群 185800038 | 如果我死了说明我 AFO 了搬运于
2025-08-24 22:47:43,当前版本为作者最后更新于2023-05-23 22:45:08,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题意:
给定一个序列 。
你需要从中选出若干个元素,使得:如果你选了 ,则对于任意长度为 的区间(即 ,其中 ),至多选 个元素。
求出所选元素的最大和。
题解:
假设选了 ,那么 应当只有至多两个元素。
假设我们一共选了三个(或更多)元素,它们分别是 ,那么因为 只能有两个元素被选取,导致矛盾。
所以至多只能选两个元素。
排序一下,选取最大的那两个元素(如果非负的话),相加就是答案。
#include<bits/stdc++.h> using namespace std; int a[542457]; int main(){ ios::sync_with_stdio(false); int n;cin>>n; for(int i=0;i<n;i++)cin>>a[i]; sort(a,a+n); cout<<max(0,a[n-2])+max(0,a[n-1]);//max(0,x),即当x>0时取x(表示选取这个数),否则是0(不选择x这个数) return 0; }
- 1
信息
- ID
- 8792
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者