zoukankan      html  css  js  c++  java
  • Sereja and Swaps(贪心+暴力枚举区间)

    Sereja and Swaps

     AC_Code:

     1 //枚举区间,o(n^2),然后将区间内最小的数逐个和区间外面最大的数交换
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 typedef long long ll;
     5 const int maxn = 205;
     6 const int inf=0x3f3f3f3f;
     7 #define rep(i,first,last) for(int i=first;i<=last;i++)
     8 #define dep(i,first,last) for(int i=first;i>=last;i--)
     9 int n,k,a[maxn],b[maxn];
    10 
    11 int solve(int l,int r){
    12     memcpy(b,a,sizeof(a));
    13     int ans=0;
    14     rep(i,l,r) ans+=a[i];
    15     int p,q;
    16     rep(i,1,k){
    17         int bMax=-inf,bMin=inf;
    18         rep(j,1,n){
    19             if((j<l||j>r)&&b[j]>bMax ){
    20                 bMax=b[j];
    21                 p=j;
    22             }
    23             else if( j>=l && j<=r && b[j]<bMin ){
    24                 bMin=b[j];
    25                 q=j;
    26             }
    27         }
    28         int t=bMax-bMin;
    29         if( t<=0 ) break;
    30         ans+=t;
    31         swap(b[p],b[q]);
    32     }
    33     return ans;
    34 }
    35 int main()
    36 {
    37     scanf("%d%d",&n,&k);
    38     int ans=-inf;
    39     rep(i,1,n) scanf("%d",&a[i]);
    40     rep(i,1,n){
    41         rep(j,i,n){
    42             ans=max(ans,solve(i,j));
    43         }
    44     }
    45     printf("%d
    ",ans);
    46     return 0;
    47 }
  • 相关阅读:
    03- CSS进阶
    03-requests使用
    04-scrapy简介
    05-scrapy基本使用
    06-CrawlSpider模板
    07-Request、Response
    03-inotify+rsync sersync lsyncd实时同步服务
    markdown中折叠代码
    02-java基础语法
    01-java简介及环境配置
  • 原文地址:https://www.cnblogs.com/wsy107316/p/12360391.html
Copyright © 2011-2022 走看看