zoukankan      html  css  js  c++  java
  • 1

     1 // 题目链接  http://codeforces.com/contest/1006/problem/C
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <string>
     6 #include <algorithm>
     7 #include <utility>
     8 #include <vector>
     9 #include <map>
    10 #include <queue>
    11 #include <stack>
    12 #include <cstdlib>
    13 #include <deque>
    14 #include <set>
    15 typedef long long ll;
    16 #define lowbit(x) (x&(-x))
    17 #define ls l,m,rt<<1
    18 #define rs m+1,r,rt<<1|1
    19 using namespace std;
    20 map<ll,ll>mp;
    21 map<ll,int>id;
    22 int n;
    23 const int N=2e5+9;
    24 ll a[N];
    25 ll sum1[N],sum2[N];
    26 int main()
    27 {  //cout<<"njjni
    ";
    28     scanf("%d",&n);
    29     sum1[0]=0;
    30     ll sum=0;
    31     for(int i=1;i<=n;i++){
    32         scanf("%lld",&a[i]);
    33         sum+=a[i];
    34         sum1[i]=sum1[i-1]+a[i];
    35         mp[sum1[i]]=1;
    36         id[sum1[i]]=i;
    37     }
    38     /*    
    39     if(sum%2==0){
    40         printf("%lld
    ",sum/2);
    41         return  0;
    42     }
    43     //上面的是错误的,例如 :
    44     1 1
    45     2
    46     就应该输出0
    47     */
    48     sum2[n]=a[n];
    49     for(int i=n-1;i>=1;i--){
    50         sum2[i]=sum2[i+1]+a[i];
    51         
    52     }
    53     ll maxx=0;
    54     int i;
    55     for(int j=n;j>=1;j--){      
    56         if(mp[sum2[j]]==1){
    57             i=id[sum2[j]];
    58             if(i<j){
    59                 //cout<<i<<" "<<j<<endl;
    60             maxx=max(maxx,sum2[j]);
    61             }
    62         }
    63     }
    64     printf("%lld
    ",maxx);
    65     return 0;
    66 }
  • 相关阅读:
    最长公共子序列
    最长重复子串—后缀数组
    最长递增子序列
    最长重复子串(转)
    最长递增子序列(转)
    最长不重复子串(转)
    连续子数组最大和(转)
    alert 与 console.log
    一个null,让浏览器SB
    javascript实现简单的动画功能
  • 原文地址:https://www.cnblogs.com/tingtin/p/9327258.html
Copyright © 2011-2022 走看看