zoukankan      html  css  js  c++  java
  • Codeforces Round #243 (Div. 2) C. Sereja and Swaps

    枚举可能的区间,然后从区间内和区间外交换最小和最大的。

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    
    using namespace std ;
    
    int a[1010] ;
    
    int main()
    {
        int n ,k;
        while(~scanf("%d %d",&n,&k))
        {
            for(int i = 1 ; i <= n ; i++)
                scanf("%d",&a[i]) ;
            int maxx = -9999999,sum ;
            for(int i = 1 ; i <= n ; i++)
            {
                for(int j = i ; j <= n ; j++)
                {
                    sum = 0 ;
                    vector<int > v ,u;
                    for(int h = i ; h <= j ; h++)
                    {
                        v.push_back(a[h]) ;
                        sum += a[h] ;
                    }
                    maxx = max(maxx,sum) ;
                    for(int h = 1 ; h <= n ; h++)
                    {
                        if(h < i || h > j)
                            u.push_back(a[h]) ;
                    }
                    sort(v.begin(),v.end()) ;
                    sort(u.begin(),u.end()) ;
                    reverse(u.begin(),u.end()) ;
                    for(int h = 1 ; h <= k && h <= v.size() && h <= u.size() ; h++)//枚举交换次数
                    {
                        if(v[h-1] < u[h-1])
                        {
                            sum -= v[h-1] ;
                            sum += u[h-1] ;
                            maxx = max(sum,maxx) ;
                        }
                    }
                }
            }
            printf("%d
    ",maxx) ;
        }
        return 0 ;
    }


     

  • 相关阅读:
    JavaSE_11_File类、递归
    JavaSE_10_IO流
    leyou_07_对数据的操作
    JavaSE_09_Map
    JavaSE_08_Collections常用功能
    java 22
    java 22
    java 22
    java 22
    java 22
  • 原文地址:https://www.cnblogs.com/vermouth/p/3832198.html
Copyright © 2011-2022 走看看