Codeforces Round #340 (Div. 2) B. Chocolate 组合学、简单题

ProLightsfx 2016-12-11 126 12/11
B. Chocolate 组合学、简单题

Source

Codeforces Round #340 (Div. 2)

 

My Solution

0 1 0 1 0 1 0

从左向右遍历, 遇到第一个1后开始算(ans = 1), 然后连续的cnt个0 碰到隔断连续0的1的时候 ans *= cnt, cnt = 0, 然后继续访问

这样就把左端的连续0和右端的连续0去掉了

2 发 Wrong answer on test 7

尴尬 最开始的时候只包括了 0 1 0 1 0, 1 0 1, 1 1 1 1 1 1这些情况,

但漏了0 0 0 0 0 0,

所以初始化为 ans = 0; // 最开始的时候是初始化为 1 的

复杂度 O(n)

 

#include 
#include 

using namespace std;
typedef long long LL;
const int maxn = 1e6 + 8;


int main()
{
    #ifdef LOCAL
    freopen("b.txt", "r", stdin);
    //freopen("o.txt", "w", stdout);
    int T = 2;
    while(T--){
    #endif // LOCAL
    ios::sync_with_stdio(false);
    cin.tie(0);

    int n, val;
    LL cnt = 0, ans = 0;
    bool flag = true;
    cin>>n;
    for(int i = 0; i < n; i++){ cin>>val;
        if(flag){
            if(val == 1) {flag = false; ans = 1;}
            else continue;
        }
        if(val == 0){
            cnt++;
        }
        else if(cnt != 0){   //末尾是 0 0 不要紧
            ans *= (cnt + 1);
            cnt = 0;
        }
    }
    //if(cnt1 == 1) cout<<1<<endl;
    //else
    cout<<ans;


    #ifdef LOCAL
    cout<<endl;
    }
    #endif // LOCAL
    return 0;
}

 


非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

https://www.prolightsfxjh.com/

Thank you!

                                                                                                                                             ------from ProLightsfx

- THE END -

ProLightsfx

11月15日20:09

最后修改:2024年11月15日
0

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

共有 0 条评论