题解 | 小红的双排列删除得分

小红的双排列删除得分

https://www.nowcoder.com/practice/936b2a6a94bc43f6a79b74025b93f944

#include <iostream>
#include<vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin>>n;
    vector<long long>a(2*n+5);
    vector<long long>prefix(2*n+5);
    vector<int>id(2*n+5);
    vector<long long>res(2*n+5);
    for(int i=1;i<=2*n;i++){
        cin>>a[i];
        prefix[i]=prefix[i-1]+a[i];
        if(id[a[i]]){
            res[i]=res[id[a[i]]-1]+prefix[i]-prefix[id[a[i]]-1];
        }
        else id[a[i]]=i;
        res[i]=max(res[i],res[i-1]);
    }
    cout<<res[2*n]<<endl;
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

昨天 21:52
武汉大学 Java
点赞 评论 收藏
分享
11-13 14:37
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务