Senior's Array

Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 852Accepted Submission(s): 311


Problem Description
One day, Xuejiejie gets an arrayA. Among all non-empty intervals ofA, she wants to find the most beautiful one. She defines the beauty as the sum of the interval. The beauty of the interval---[L,R]is calculated by this formula : beauty(L,R) =A[L]+A[L+1]++A[R]. The most beautiful interval is the one with maximum beauty.

But as is known to all, Xuejiejie is used to pursuing perfection. She wants to get a more beautiful interval. So she asks Mini-Sun for help. Mini-Sun is a magician, but he is busy reviewing calculus. So he tells Xuejiejie that he can just help her change one value of the element ofAtoP. Xuejiejie plans to come to see him in tomorrow morning.

Unluckily, Xuejiejie oversleeps. Now up to you to help her make the decision which one should be changed(You must change one element).

Input
In the first line there is an integerT, indicates the number of test cases.

In each case, the first line contains two integersnandP.nmeans the number of elements of the array.Pmeans the value Mini-Sun can change to.

The next line contains the original array.

1n1000,109A[i],P109

Output
For each test case, output one integer which means the most beautiful interval's beauty after your change.

Sample Input

2
3 5
1 -1 2
3 -2
1 -1 2

Sample Output
8 2
Source
BestCoder Round #47 ($)
/**
    题意:给出一个数组,如果用p代替数组中的一个数求最大的区间和
    做法:dp(比赛的时候想得太多)
**/
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
#define maxn 1100
#define INF 0x7fffffff
using namespace std;
long long  mmap[maxn];
long long  dp[2][maxn];
long long n;
long long DP()
{
    dp[0][0] = max((long long)0,mmap[0]);
    for(int i=1;i<n;i++)
    {
        dp[0][i] = max((long long)0,dp[0][i-1] + mmap[i]);
    }
    long long tmp = mmap[0];
    for(int i=1;i<n;i++)
    {
        dp[1][i] = dp[0][i-1] + mmap[i];
        tmp = max(tmp,dp[1][i]);
    }
    return tmp;
}
int main()
{
//#ifndef ONLINE_JUDGE
//    freopen("in.txt","r",stdin);
//#endif // ONLINE_JUDGE
    int T;
    scanf("%d",&T);
    while(T--)
    {
        long long p;
        scanf("%lld %lld",&n,&p);
        for(int i=0;i<n;i++)
        {
            scanf("%lld",&mmap[i]);
        }
        memset(dp,0,sizeof(dp));
        long long res = -INF;
        for(int i=0;i<n;i++)
        {
            long long tt = mmap[i];
            mmap[i] = p;
            res = max(res,DP());
            mmap[i] = tt;
        }
        printf("%lld\n",res);
    }
    return 0;
}

优质内容筛选与推荐>>
1、oracle 数据字典
2、fuel健康检查Heat失败的原因
3、Codeforces Round #404 (Div. 2) E. Anton and Permutation(树状数组套主席树 求出指定数的排名)
4、给程序增加一个加载页面,提高用户体验
5、JSP学习笔记(八十七):weblogic9.2中修改端口号


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn