解释一下我的g函数怎么超的?
查看原帖
解释一下我的g函数怎么超的?
1444389
Xing_Yang楼主2025/7/1 08:59
#include<bits/stdc++.h>
using namespace std;
vector<uint64_t>a;
uint64_t g(uint64_t m,uint64_t n){
    if(m==n) return m;
    if(m<n) return g(n,m);
    if(m&1){
        if(n&1) return g(n,m-n);
            return g(m,n/2);
    }
    else if(n&1) return g(m/2,n);
    return 2*g(m/2,n/2);   
}
uint64_t fenzhiFZ(uint64_t sum,uint64_t i,uint64_t j){
    //采用和归并排序类似的思想优化   O(logn)
    if(i==j) return a[i]+sum;
    uint64_t mid=(i+j)>>1;
    uint64_t a=fenzhiFZ(sum,i,mid),s=fenzhiFZ(sum,mid+1,j);
    return g(a,s);
}
int main(){
    uint64_t n,q,s;
    cin>>n>>q;
    while(n--){
        cin>>s;
        a.emplace_back(s);
    }
    for(int i=1;i<=q;i++)
        cout<<fenzhiFZ(i,0,a.size()-1)<<endl;
    return 0;
}

g的时间复杂度是多少?

2025/7/1 08:59
加载中...