zoukankan      html  css  js  c++  java
  • D.Array Division

    Array Division

    题目链接

    题意

    n个数,然后你可以移动里面的一个数,然后再将序列分成两段,问是否可能这两段的和相同。

    思路

    先求出序列的前缀和,然后枚举移动哪个,要么放在当前序列的前面,要么放后面,然后二分检验是否符合要求。
    复杂度(n*log(n))

    代码

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    LL ans[100005];
    LL sum[100005];
    int main(void)
    {
        int n;
        scanf("%d",&n);
        bool flag = false;
        for(int i = 1; i <= n; i++)
        {
            scanf("%lld",&ans[i]);
            sum[i] = sum[i-1] + ans[i];
        }
        if(sum[n]%(LL)2||n == 1)
        {
            printf("NO
    ");
        }
        else
        {
            for(int i = 1; i <= n; i++)
            {
                if(sum[i] == sum[n]/(LL)2)
                {
                    printf("YES
    ");
                    return 0;
                }
            }
            LL u = sum[n]/(LL)2;
            for(int i = 1; i <= n; i++)
            {
                int id = -1;
                int l = 0,r = i-1;
                while(l <= r)
                {
                    int mid = (l+r)/2;
                    if(sum[mid] +  ans[i] <= u)
                    {
                        id = mid;
                        l = mid + 1;
                    }
                    else r = mid-1;
                }
                if(id!=-1&&sum[id] + ans[i] == u)
                    flag = true;
                l = i+1,r = n+1;
                while(l <= r)
                {
                    int mid = (l+r)/2;
                    if(sum[n] - sum[mid-1]+  ans[i] <= u)
                    {
                        id = mid;
                        r = mid - 1;
                    }
                    else l = mid+1;
                }
                if(id!=-1&&sum[n] - sum[id-1]+  ans[i] == u)
                    flag = true;
            }
            if(flag)
                printf("YES
    ");
            else printf("NO
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    【2019/5/24】周进度报告
    第一阶段意见汇总以及改进
    【2019/5/18】周进度报告
    用户体验评价-搜狗输入法
    第二阶段冲刺1
    第十四周总结
    找水王
    第十三周总结
    程序员修炼之道-从小工到专家阅读笔记02
    第十二周总结
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/6867046.html
Copyright © 2011-2022 走看看