• Educational Codeforces Round 26 F. Prefix Sums 二分,组合数


    题目链接:http://codeforces.com/contest/837/problem/F

    题意:如题QAQ

    解法:参考题解博客:http://www.cnblogs.com/FxxL/p/7282909.html

         由于新生成的m+1个数列第一个肯定为0,所以可以忽略掉,当作每次新生成的数列只拥有m个元素

         来枚举一个例子,可以发现规律。

               当a[] = {1,0,0,0,0}时,手动推出的矩阵如下:

              

             可以发现对于这个矩阵显然是满足杨辉三角的,我们二分出一个值后可以直接利用组合数来计算出当前的答案,然后check

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 200010;
    typedef long long LL;
    LL n,k,a[maxn];
    
    bool check(LL mid){
        double sum=0;
        LL x,y,p,q;
        for(LL t=0; t<n; t++){
            if(a[t]==0) continue;
            x=mid; y=(n-1)-t;
            p=x-1; q=p+y;
            p = min(q-p, p);
            double tmp = a[t];
            for(LL i=q, j=p; j>=1; j--,i--){
                tmp = tmp*i/j;
                if(tmp>=k) return true;
            }
            sum += tmp;
            if(sum>=k) return true;
        }
        return false;
    }
    int main()
    {
        cin>>n>>k;
        for(int i=0; i<n; i++){
            cin>>a[i];
            if(a[i]>=k){
                printf("0
    ");
                return 0;
            }
        }
        LL l=0,r=k,ans;
        while(l<=r){
            LL mid=(l+r)/2;
            if(check(mid)) ans=mid,r=mid-1;
            else l=mid+1;
        }
        bool ok = check(2);
        if(ans==0) ans++;
        cout<<ans<<endl;
        return 0;
    }
    
  • 相关阅读:
    Leetcode 171. Excel Sheet Column Number
    Leetcode 206 Reverse Linked List
    Leetcode 147. Insertion Sort List
    小明一家人过桥
    Leetcode 125. Valid Palindrome
    Leetcode 237. Delete Node in a Linked List
    Leetcode 167 Two Sum II
    张老师的生日
    Leetcode 27. Remove Element
    Leetcode 283. Move Zeroes
  • 原文地址:https://www.cnblogs.com/spfa/p/7351222.html
Copyright © 2020-2023  润新知