zoukankan      html  css  js  c++  java
  • Codeforces 331A2

    贪心搞就行,用map记录每个数出现的下标,每次都取首尾两个。将中间权值为负的删掉后取sum值最大的就行。

    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<string>
    #include<stack>
    #include<map>
    #include<set>
    #include<cstdio>
    #include<cstring>
    #include<cstdio>
    #include<cmath>
    #include<cstdlib>
    #define FF(i, a, b) for(int i=a; i<b; i++)
    #define FD(i, a, b) for(int i=a; i>b; i--)
    #define REP(i, n) for(int i=0; i<n; i++)
    #define CLR(a, b) memset(a, b, sizeof(a))
    #define LL long long
    
    using namespace std;
    
    const int maxn = 333333;
    int n, a[maxn], l, r, k, ans[maxn];
    LL s[maxn];
    map<int, vector<int> > mp;
    map<int, vector<int> > :: iterator it;
    
    int main()
    {
        while(~scanf("%d", &n))
        {
            s[0] = 0; mp.clear();
            LL sum = -111111111111, tmp;
            FF(i, 1, 1+n)
            {
                scanf("%d", &a[i]);
                if(a[i] > 0) s[i] = s[i-1] + a[i];
                else s[i] = s[i-1];
                mp[a[i]].push_back(i);
            }
            for(it = mp.begin(); it != mp.end(); it++)
            {
                int nc = it->second.size();
                if(nc >= 2)
                {
                    tmp = s[it->second[nc-1]] - s[it->second[0]-1];
                    if(it->first < 0) tmp += it->first*2;
                    if(tmp > sum)
                    {
                        sum = tmp, l = it->second[0], r = it->second[nc-1];
                    }
                }
            }
            k = 0;
            FF(i, 1, l) ans[k++] = i;
            FF(i, l+1, r) if(a[i] < 0) ans[k++] = i;
            FF(i, r+1, n+1) ans[k++] = i;
            printf("%I64d %d
    ", sum, k);
            REP(i, k) printf("%d ", ans[i]);
        }
        return 0;
    }
    


  • 相关阅读:
    spring boot @value 使用
    mac Navicat premium 链接oracle
    List sort 排序
    mac 配置jdk+maven环境变量
    mybatis 根据主键批量insert或update
    git 常用命令
    SpringBoot整合Activiti案例
    Activiti网关-并行网关
    Activiti网关-包含网关
    Activiti网关-排他网关
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3199164.html
Copyright © 2011-2022 走看看