zoukankan      html  css  js  c++  java
  • [Luogu5190][COCI2010]PROGRAM

    题目链接:

    Luogu5190

    一个简单的优化:把相同的(X_i)放在一起操作。

    那么时间复杂度就是(sum_{i=1}^nlimits frac ni=O(nlog_2n))(详情百度调和级数)

    然后求个前缀和就可以快速回答了。

    代码:

    #include <cstdio>
    #include <cctype>
    typedef unsigned long long ull;
    
    inline int Getint()
    {
        register int x=0,c;
        while(!isdigit(c=getchar()));
        for(;isdigit(c);c=getchar())x=x*10+(c^48);
        return x;
    }
    
    int n,k,q;
    int c[1000005],a[1000005];
    ull s[1000005];
    
    int main()
    {
        n=Getint(),k=Getint();
        for(int i=1;i<=k;++i)++c[Getint()];
        for(register int i=1;i<=n;++i)if(c[i])
            for(register int j=1;j<=n;j+=i)a[j]+=c[i];
        for(register int i=1;i<=n;++i)s[i]=s[i-1]+a[i];
        for(register int q=Getint(),l,r;q--;)
            l=Getint(),r=Getint(),printf("%llu
    ",s[r+1]-s[l]);
        return 0;
    }
    
  • 相关阅读:
    Java 日志
    编写用例文档
    uml用例关系
    地址线和数据线
    Android总结
    DbUtil数据库连接
    PropertiesUtil
    log4j.properties配置
    自定义博客样式
    css给文字加下划线
  • 原文地址:https://www.cnblogs.com/LanrTabe/p/10370216.html
Copyright © 2011-2022 走看看