/*
http://codeforces.com/contest/426/problem/C
最多交换k个数的顺序,求a[i]的最大连续和
爆解
思路:Lets backtrack interval that should contain maximal sum.
To improve it we can swap not more then K minimal elements
in fixed interval to not more K maximal elements not
contained in our interval. As n is quite little we can
do it in any way. Author solution works O(n3?*?log(n)).
*/
#include <iostream>
#include <vector>
#include <string.h>
#include <algorithm>
#include <queue>
#include <set> using namespace std;
int sum[][],a[];//sum[i][j]保存从i到j的和
int main(){
int n,k,i,j,o,ans;
cin>>n>>k;
for(i=;i<n;i++) cin>>a[i];//输入
memset(sum,,sizeof(sum));//清0
ans=-;//最值
for(i=;i<n;i++){
sum[i][i]=a[i];
if(sum[i][i]>ans) ans=sum[i][i];
for(j=i+;j<n;j++){
sum[i][j]=sum[i][j-]+a[j];
if(sum[i][j]>ans) ans=sum[i][j];
}
}
priority_queue<int> temp;
multiset<int> add;
for(i=;i<n;i++){
for(j=i;j<n;j++){
for(o=i;o<=j;o++){//查找从i到j为负的最小的k个
if(a[o]<) temp.push(a[o]);
if(temp.size()>k) temp.pop();
}
if((j-i+)==temp.size()){//全为负
sum[i][j]=temp.top();
while(!temp.empty()) temp.pop();//清空
}
else{
while(!temp.empty()){//清空
sum[i][j]-=temp.top();//将负的移出
temp.pop();
}
} add.clear();//清空add
//对于非[i,j]部分取k个最大正数
for(o=i-;o>=;o--){
if(a[o]>) add.insert(a[o]);
if(add.size()>k) add.erase(add.begin());
}
for(o=j+;o<n;o++){
if(a[o]>) add.insert(a[o]);
if(add.size()>k) add.erase(add.begin());
}
while(!add.empty()){
sum[i][j]+=*add.begin();
add.erase(add.begin());
}
if(sum[i][j]>ans) ans=sum[i][j];//更新ans
}
}
cout<<ans<<"\n";
return ;
}

[ACM_暴力] 最多交换k个数的顺序,求a[i]的最大连续和的更多相关文章

  1. hdu4106 区间k覆盖问题(连续m个数,最多选k个数) 最小费用最大流 建图巧妙

    /** 题目:hdu4106 区间k覆盖问题(连续m个数,最多选k个数) 最小费用最大流 建图巧妙 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4106 ...

  2. 返回最小的k个数

    对于一个无序数组,数组中元素为互不相同的整数,请返回其中最小的k个数,顺序与原数组中元素顺序一致. 给定一个整数数组A及它的大小n,同时给定k,请返回其中最小的k个数. 测试样例: [1,2,4,3] ...

  3. 小米笔试题:无序数组中最小的k个数

    题目描述 链接:https://www.nowcoder.com/questionTerminal/ec2575fb877d41c9a33d9bab2694ba47?source=relative 来 ...

  4. 最小的K个数:用快排的思想去解相关问题

    实现快速排序算法的关键在于先在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择的数字小的数字移到数组的左边,比选择的数字大的数字移到数组的右边. 这个函数可以如下实现: int Partit ...

  5. 【面试题030】最小的k个数

    [面试题030]最小的k个数 题目:     输入n个整数,找出其中最小的k个数.     例如输入4.5.1.6.2.7.3.8这8个字,则其中最小的4个数字是1.2.3.4.     思路一:   ...

  6. 九度 1371 最小的K个数

    题目描述:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行:第一行为2个整数n,k(1<= ...

  7. 九度OJ 1371 最小的K个数 -- 堆排序

    题目地址:http://ac.jobdu.com/problem.php?pid=1371 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4 ...

  8. 算法进阶面试题02——BFPRT算法、找出最大/小的K个数、双向队列、生成窗口最大值数组、最大值减最小值小于或等于num的子数组数量、介绍单调栈结构(找出临近的最大数)

    第二课主要介绍第一课余下的BFPRT算法和第二课部分内容 1.BFPRT算法详解与应用 找到第K小或者第K大的数. 普通做法:先通过堆排序然后取,是n*logn的代价. // O(N*logK) pu ...

  9. 寻找最大的k个数问题

    这是编程之美书第2.5节的一道题目. 各种解法: 解法一,用nlgn复杂度的排序算法对数组进行从大到小排序,取前K个.但这方法做了两件不必要做的事:它对想得到的K个数进行了排序,对不想得到的n-K个数 ...

随机推荐

  1. where T:new() 是什么意思

    经常看到方法后面加where T:new() ,下面来解释下 比如如下这个方法   protected static T CreateNewInstance<T>() where T :  ...

  2. Mybatis-Generator自动生成Dao、Model、Mapping等相关映射文件(懒人版)

    今天在学习mybatis生成相关的映射文件的时候,发现了往期的生成Dao.Model.Mapping等文章多数都是一样的,我也在学着重复造轮子,不过是懒人造的.本文旨在解决开发过程,简化配置文件的“手 ...

  3. (转) Ringbuffer为什么这么快?

    原文地址:http://ifeve.com/ringbuffer/ 最近,我们开源了LMAX Disruptor,它是我们的交易系统吞吐量快(LMAX是一个新型的交易平台,号称能够单线程每秒处理数百万 ...

  4. hdoj1075-What Are You Talking About 【map】

    http://acm.hdu.edu.cn/showproblem.php?pid=1075 What Are You Talking About Time Limit: 10000/5000 MS ...

  5. 带最小值操作的栈 · Min Stack

    [抄题]: 实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值. 你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成. [思维问题]: [一句话思 ...

  6. Linux-——grep

    概念介绍 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

  7. centos7下源码安装mysql5.7.16

    一.下载源码包下载mysql源码包 http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.16.tar.gz 二.安装约定: 用户名:mysql 安装目录 ...

  8. geoserver 开发1

    打开项目,会看见下面这些包(其实还有很多插件之类的包,我都删除了) 5)可以从Eclipse启动GeoServer了. 如果你已经安装了GeoServer,现在也可以打开它的登陆页面进行操作. 三 结 ...

  9. 11月11日光棍节考试总结hhh

    好吧,第一题字符串裸栈就能A 第二题字典序没调完,先写的第一题和第三题暴力,第二题读题感觉自己不会写,其实也能写出来,浪费了好多时间 第三题DP大概是写的暴力,原本可以搞到20分,要交的时候发现自己少 ...

  10. PhpStorm 注册相关

    网址 http://idea.lanyus.com/ 最新(2017年9月)PhpStorm 2017.3 .WebStorm 2017.2.5.PyCharm  2016.3激活方式 打开网址 ht ...