传授人生经验(预处理)

Description

轩神与奇牛是师徒,也是K友,经常打2K,可奇牛老是不故意放水让轩神输,于是轩神决定给奇 牛传授点人生经验以作补偿。 轩神拿出其珍藏多年的人生经验打造了n个经验球并连成一串,每一 个球里都含着一定量的人生经验。好玩的是,你打破一个球,你没法获得里面的人生经验,而只 能获得打破的那个球两边球的经验绝对值差。 假设轩神造了5个球,按顺序为 1 2 3 4 5 那么打破 第一个得到:|0­-(2+3+4+5)|=14; 打破第二个:|1­-(3+4+5)|=11 以此类推。

Input

输入第一个行是一个整数T,表示轩神向奇牛传授了T回人生经验。 接下来是T组数据,每组数据 开头是一个n(0< n<=10000),表示轩神此次打造的经验球的个数 然后接下来是n个绝对值不大于 1000000整数(按顺序连成一串),表示轩神的人生经验。 要知道,毕竟人无完人,轩神的经验也 有糟粕,所以存在负数。

Output

结果输出T行,对应T组数据。(T<=100) 奇牛为了不辜负轩神对其的厚爱,每次都要争取得到 最多的人生经验,那么,问题来了! 奇牛能得到的最大人生经验到底有多少?请聪明的师弟师妹 帮帮奇牛算出来并输出。

Sample Input

2
5
1 2 3 4  
5
5-1 12 -41 111 -65

Sample Output

14
81
建立2个数组,一个储存原数据,另一个储存累和;
重点在于输入的同时去累和处理。不然,先输入完然后再去处理,数据太多会超时。
代码如下:
#include 
    
    
     
     
#include 
     
     
      
      
using namespace std;
int a[20000];
int sum[20000];
int main(){
    int t;cin>>t;
    while(t--)
    {
        int n;cin>>n;
        
        for(int i=1;i<=n;i++) { //预处理!!
        cin>>a[i];
        sum[i]=sum[i-1]+a[i];
        }
        
        int max=0,z,left,right;
        for(int i=1;i<=n;i++)
        {
            left=sum[i]-a[i];
            right=sum[n]-sum[i];
            if(abs(left-right)>=max) max=z;
        }
        cout<
      
      
       
       <
       
       
      
      
     
     
    
    
博客已搬:洪学林博客
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值