官方题解
2025-10-08 09:39:46
发布于:浙江
22阅读
0回复
0点赞
题目大意
在序列 中选出偶数个数,使得重新排列后可以变成 "maple序列" ,求 "maple序列" 长度的最大值。
解题思路
观察到本题 的数据范围很小,所以我们可以枚举 的值,统计 "maple序列" 的长度,记录最大值即可。
参考代码
#include <bits/stdc++.h>
using namespace std;
const int N = 5010;
int cnt[N*2];
int main(){
int n;cin>>n;
for(int i=1;i<=n;i++){
int x;cin>>x;
cnt[x]++;
}
int ans=0;
for(int i=1;i<N*2;i++){
int res=0;
for(int j=1;j<=i-j;j++){
if(i-j==j) res+=cnt[j]/2*2;
else res+=min(cnt[j],cnt[i-j])*2;
}
ans=max(ans,res);
}
cout<<ans<<endl;
return 0;
}
这里空空如也
有帮助,赞一个