LightOJ - 1234 分块预处理

Posted The Azure Arbitrator

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LightOJ - 1234 分块预处理相关的知识,希望对你有一定的参考价值。

求∑1/i,但是范围很大
和bitmap的想法一样,分个块,均摊复杂度就降下来了
//到底排行榜上的0ms是怎么做到的?

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+11;
const int N = 1e8;
double tmp[N/128+7];
int main(){
    double t=0;
    for(int i = 1; i <= N; i++){
        t+=(double)1/i;
        if(i%128==0) tmp[i/128]=t;
    }
    int T,kase=0; scanf("%d",&T);
    while(T--){
        int n; scanf("%d",&n);
        int divi=n/128,remi=n%128;
        double ans=tmp[divi];
        for(int i = 1; i <= remi; i++){
            ans+=(double)1/(divi*128+i);
        }
        printf("Case %d: %.10lf\n",++kase,ans);
    }
    return 0;
}

以上是关于LightOJ - 1234 分块预处理的主要内容,如果未能解决你的问题,请参考以下文章

LightOJ1234 Harmonic Number 调和级数求和

lightoj 1234

LightOJ 1098(均值不等式,整除分块玄学优化)

LightOJ 1234 Harmonic Number (打表)

LightOJ 1234Harmonic Number

Harmonic Number LightOJ - 1234 ??????????????????