首页 > 其他分享 >一个经典的级数时间复杂度

一个经典的级数时间复杂度

时间:2023-01-17 21:01:20浏览次数:55  
标签:GCC 级数 int 复杂度 1e6 solve 经典 公因数


要点:

for i (1 to n) i ++;for j(i to n) j += i;

这个的时间复杂度是O(nlogn)


题意:

  • 给一个长度为n的子数组a,找出最长的子序列最大公因数不超过m

解发:

  • 观察n,m的范围(1e6),那么最大公因数必然在这之内
  • 定义f[i]表示以 i 作为倍数的数量,那么枚举不重复的数字,状态计算通过上面要点算出来
  • f中最大的就是最小公倍数和对应的数量,是答案之一

#include<bits/stdc++.h>
#define debug1(a) cout<<#a<<'='<< a << endl;
#define debug2(a,b) cout<<#a<<" = "<<a<<"  "<<#b<<" = "<<b<<endl;
#define debug3(a,b,c) cout<<#a<<" = "<<a<<"  "<<#b<<" = "<<b<<"  "<<#c<<" = "<<c<<endl;
#define debug4(a,b,c,d) cout<<#a<<" = "<<a<<"  "<<#b<<" = "<<b<<"  "<<#c<<" = "<<c<<"  "<<#d<<" = "<<d<<endl;
#define debug5(a,b,c,d,e) cout<<#a<<" = "<<a<<"  "<<#b<<" = "<<b<<"  "<<#c<<" = "<<c<<"  "<<#d<<" = "<<d<<"  "<<#e<<" = "<<e<<endl;
#define endl "\n"
#define fi first
#define se second

#define int long long
using namespace std;

typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef pair<LL,LL> PLL;

//#pragma GCC optimize(3,"Ofast","inline")
//#pragma GCC optimize(2)
const int N = 1e6+10;
int a[N];
vector<int> idx[N];
int f[N];


void solve() 
{
    int n,m;cin >> n >> m;
    for(int i = 1;i <= n;i ++)
    {
        cin >> a[i];
        if(a[i] <= m)
        {
            idx[a[i]].push_back(i);
        }
    }
    
    for(int i = 1;i <= m;i ++)
    {
        for(int j = i;j <= m;j += i)
        {
            f[j] += idx[i].size();
        }
    }

    int tar = max_element(f + 1,f + 1 + m) - f;
    cout << tar << " " << f[tar] << endl;
    for(int i = 1;i <= n;i ++)
    {
        if(tar % a[i] == 0)
        {
            cout << i << " ";
        }
    }

}

signed main()
{
    /*
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    */
    int T = 1;//cin >> T;
    while(T--){
        //puts(solve()?"YES":"NO");
        solve();
    }
    return 0;

}
/*

*/

 

标签:GCC,级数,int,复杂度,1e6,solve,经典,公因数
From: https://www.cnblogs.com/cfddfc/p/17058681.html

相关文章

  • Python经典编程习题100例,供初学者学习
    如果需要完整代码可以关注下方公众号,后台回复“代码”即可获取,阿光期待着您的光临~✌题目及题解持续更新中✌本人初学Python,只为熟悉语法编写,大神请勿理会......
  • 【推荐系统】Facebook经典模型GBDT+LR代码实践
    如果需要完整代码可以关注下方公众号,后台回复“代码”即可获取,阿光期待着您的光临~文章目录​​一、导库​​​​二、处理数据​​​​三、构建LR模型​​​​四、构建GBDT......
  • 由经典面试题(从输入url到页面展示的详细过程)梳理前端知识体系
    前言本文的目标是梳理一个相对完整的前端向知识体系,本文是前端向,以前端领域的知识为重点前端向知识的重点首先明确,计算机方面的知识是可以无穷无尽的挖的,而本文的重点是梳理......
  • 英语一百句 -- 经典
    1.I'manofficeworker.我是上班族。2.Iworkforthegovernment.我在政府机关做事。3.I'mhappytomeetyou.很高兴见......
  • 时间复杂度分析
    朴素分析直接暴力统计计算次数。摊还分析聚合分析核心思想:算出总复杂度然后均摊。例:1.“栈”:维护一个栈,支持栈顶插入和一次弹出所有元素。显然\(n\)次......
  • 经典机器学习算法总结
    一,KNN算法1.1,k值的选取1.2,KNN算法思路二,支持向量机算法2.1,支持向量机简述2.2,SVM基本型2.3,对偶问题求解三,K-means聚类算法3.1,分类与聚类算法3.2,K-mea......
  • 程序员面试阿里、腾讯、百度等大厂,面试经典问题你知道吗?
    1.并行和并发有什么区别?并行(Parallel):指两个或者多个事件在同一时刻发生,即同时做不同事的能力。例如垃圾回收时,多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。......
  • 经典this指向问题
    代码如下functionf1(){this.p=function(){//这里this跟的是p这个func,谁调用p,就跟谁console.log(this);}returnthis}functionf2(){this......
  • 【带你读论文】向量表征经典之DeepWalk
    摘要:详细讲解DeepWalk,通过随机游走的方式对网络化数据做一个表示学习,它是图神经网络的开山之作,借鉴了Word2vec的思想。本文分享自华为云社区《[论文阅读](25)向量表征经......
  • B站万亿级数据库选型与架构设计实践
    分享概要一、业务场景二、架构演进三、架构设计四、稳定性五、效率 一、业务场景 在开始讲解之前,我先为大家介绍一下B站的业务场景......