问题:
Problem Statement 有 N 块羊肉穿在同一根竹签上,从左到右美味值 依次为 V1, V2, ..., VN。注意美味值可能为负数。 现在你想把一些羊肉夹到自己的盘子里。 你至多可以进行 K 次操作,可选择的操作如下: 操作 A:将羊肉串上最左端的羊肉夹到盘子中,必须保证羊肉串上有羊肉 操作 B:将羊肉串上最右端的羊肉夹到盘子中,必须保证羊肉串上有羊肉 操作 C:将盘子中的某块羊肉重新穿到羊肉串的最左端,必须保证盘子中有羊肉 操作 D:将盘子中的某块羊肉重新穿到羊肉串的最右端,必须保证盘子中有羊肉 找出夹到盘子中的羊肉的美味值之和的最大可能。 Constraints 所有输入的值都是整数 1 ≤ N ≤ 50 1 ≤ K ≤ 100 -107 ≤ Vi ≤ 107 Input 输入按以下格式由 标准输入 给出: N K V1 V2 ... VN Output 输出夹到盘子中的羊肉的美味值之和的最大可能。 Sample Input 1 6 4 -10 8 2 1 2 6 Sample Output 1 14 通过以下操作,你将会得到两块美味值分别为 8 和 6 的羊肉,总和 14 为最大值。 操作 A,把美味值为 -10 的羊肉夹到盘中 操作 B,把美味值为 6 的羊肉夹到盘中 操作 A,把美味值为 8 的羊肉夹到盘中 操作 D,把美味值为 -10 的羊肉穿回羊肉串的右端 Sample Input 2 6 4 -6 -100 50 -2 -5 -3 Sample Output 2 44 Sample Input 3 6 3 -6 -100 50 -2 -5 -3 Sample Output 3 0 什么都不做才是最优的。
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue> //priority_queue
#include <map>
#include <set> //multiset set<int,greater<int>> //big->small
#include <vector> // vector<int>().swap(v);清空释放内存
#include <stack>
#include <cmath> // auto &Name : STLName Name.
#include <utility>
#include <sstream>
#include <string> //__builtin_popcount(ans);//获取某个数二进制位1的个数
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int MAX_N = 1000 +10;
const int MOD = 1000000007;
const int SZ = 1<<20; //fast io
struct fastio{
char inbuf[SZ];
char outbuf[SZ];
fastio(){
setvbuf(stdin,inbuf,_IOFBF,SZ);
setvbuf(stdout,outbuf,_IOFBF,SZ);
}
}io;
int read()
{
int x=0,f=1;char ch=getchar();
while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
return x*f;
}
int n,m,a[MAX_N],b[MAX_N],ans=0;
int main(void)
{
// ios::sync_with_stdio(false);
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
int k=min(m,n);
for(int l=0;l<=k;l++)
{
for(int r=0;r<=k;r++)
{
for(int i=0;i<l;i++) b[i]=a[i];
for(int j=0;j<r;j++) b[l+j]=a[n-j-1];
sort(b,b+l+r);
int k=0,temp=0;
while(k+l+r<m && b[k]<0)
k++;
while(k < l+r)
{
temp+=b[k];
k++;
}
ans=max(ans,temp);
}
}
printf("%d\n",ans);
return 0;
}
原文:https://www.cnblogs.com/jaszzz/p/12891182.html