zoukankan      html  css  js  c++  java
  • b_lc_生成平衡数组的方案数(奇偶前缀和)

    给一n个元素的数组A,求出删除一位元素使得整个数组的奇数下标和与偶数下标和相等的方案数。

    思路:一开始想用前、后缀做,不过那样会更麻烦,导致我浪费了许多时间,直接求一个前缀和方便多了

    const int N=1e5+5;
    class Solution {
    public:
        int os[N], es[N];
        int waysToMakeFair(vector<int>& A) {
            int n=A.size(), ans=0;
            A.insert(A.begin(), 0);
            for (int i=1; i<=n; i++) {
                if (i&1) {
                    os[i]=os[i-1]+A[i];
                    es[i]=es[i-1];
                } else {
                    es[i]=es[i-1]+A[i];
                    os[i]=os[i-1];
                }
            }
            for (int i=1; i<=n; i++) {
                int o=os[i]+es[n]-es[i-1]; //删除一位之后,下标奇数变偶数,偶数变奇数
                int e=es[i]+os[n]-os[i-1];
                if (o==e) ans++;
            }
            return ans;
        }
    };
    
  • 相关阅读:
    日期时间插件
    QQ在线客服
    dede轮播图
    Animation 案例解释
    transition Css3过度详解
    解决文字无法缩小的问题
    DEDE函数
    hdu 3435 图回路分割
    HDU 4183
    hdu 1569 最小割
  • 原文地址:https://www.cnblogs.com/wdt1/p/14018707.html
Copyright © 2011-2022 走看看