先枚举$d=\gcd$,然后暴力枚举所有$d$的倍数,相当于求出若干个数中最大的互素对

假设选出的数依从大到小排序后为$a_{i}$,令$g_{i}=\min_{(a_{i},a_{j})=1}j$,则答案为$\max a_{i}\cdot a_{g_{i}}$

考虑一种比较奇怪的计算$g_{i}$的方式,先求出$tot=\sum_{j=1}^{n}[(a_{i},a_{j})=1]$,然后从$n$到1依次删除,直到删除的数中与$a_{i}$互素的数达到了$tot$个

关于$tot$的计算可以用莫比乌斯反演,即化简为$\sum_{d|a_{i}}\mu(d)\sum_{j=1}^{n}[d|a_{j}]$,记后面的式子为$f(d)$,可以在插入$a_{j}$时处理,那么就可以做到”均摊“单次插入/删除/询问$o(\ln n)$

之后考虑从$n$到1依次去删除,复杂度为$o(n-g_{i})$,但注意到若$g_{i}\ge g_{i-1}$那么没有意义,因此从$g_{i-1}$开始统计(即令$n=g_{i-1}$)就可以做到$o(n\ln^{2}n)$了(枚举$d$+计算$tot$的调和级数和gcd)

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 vector<int>v,d[N];
5 int n,x,vis[N],mu[N],p[N],f[N];
6 long long ans;
7 int gcd(int x,int y){
8 if (!y)return x;
9 return gcd(y,x%y);
10 }
11 void update(int k,int p){
12 for(int i=0;i<d[k].size();i++)f[d[k][i]]+=p;
13 }
14 int query(int k){
15 int ans=0;
16 for(int i=0;i<d[k].size();i++)ans+=mu[d[k][i]]*f[d[k][i]];
17 return ans;
18 }
19 int main(){
20 mu[1]=1;
21 for(int i=2;i<N-4;i++){
22 if (!vis[i]){
23 p[++p[0]]=i;
24 mu[i]=-1;
25 }
26 for(int j=1;(j<=p[0])&&(i*p[j]<N-4);j++){
27 vis[i*p[j]]=1;
28 if (i%p[j])mu[i*p[j]]=-mu[i];
29 else{
30 mu[i*p[j]]=0;
31 break;
32 }
33 }
34 }
35 scanf("%d",&n);
36 memset(vis,0,sizeof(vis));
37 for(int i=1;i<=n;i++){
38 scanf("%d",&x);
39 vis[x]=1;
40 }
41 for(int i=1;i<N-4;i++)
42 for(int j=i;j<N-4;j+=i)d[j].push_back(i);
43 for(int i=1;i<N-4;i++){
44 v.clear();
45 for(int j=i;j<N-4;j+=i)
46 if (vis[j])v.push_back(j/i);
47 int m=v.size();
48 for(int j=0;j<m;j++)update(v[j],1);
49 for(int j=m-1,k=0;j>=0;j--){
50 int sum=query(v[j]);
51 while (sum){
52 if (gcd(v[j],v[k])==1){
53 sum--;
54 ans=max(ans,1LL*v[j]*v[k]*i);
55 }
56 update(v[k++],-1);
57 }
58 if (!j)
59 while (k<m)update(v[k++],-1);
60 }
61 }
62 printf("%lld",ans);
63 }

[cf1285F]Classical的更多相关文章

  1. JavaScript Patterns 6.2 Expected Outcome When Using Classical Inheritance

    // the parent constructor function Parent(name) { this.name = name || 'Adam'; } // adding functional ...

  2. What is classical music

    quanben's definition of classical music is a definition formed by the following aspects, 1. music wr ...

  3. Classical Inheritance in JavaScript

    JavaScript is a class-free, object-oriented language, and as such, it uses prototypal inheritance in ...

  4. ORACLE 11G R2 RAC classical install OGG12.1(LINUX) 经典抽取模式单项同步配置OGG12.1

    博文结构图如下: 一.环境描述以及注意事项 1.1 环境简介 IP 系统 Oracle版本 OGG版本 源端 172.16.10.16/36 RHEL6.5 oracle11204 12.1 目标端 ...

  5. How does Circus stack compare to a classical stack?

    Frequently Asked Questions - Circus 0.15.0 documentation https://circus.readthedocs.io/en/latest/faq ...

  6. JavaScript Patterns 6.1 Classical Versus Modern Inheritance Patterns

    In Java you could do something like: Person adam = new Person(); In JavaScript you would do: var ada ...

  7. The 50 Most Essential Pieces of Classical Music

    1. Die Zauberflöte ("The Magic Flute"), K. 620: Overture London Philharmonic Orchestra 7:2 ...

  8. Classical Binary Search

    Find any position of a target number in a sorted array. Return -1 if target does not exist. 与题目 Firs ...

  9. Classical method of machine learning

    PCA principal components analysis kmeans bayes spectral clustering svm EM hidden Markov models deep ...

随机推荐

  1. 超详细的Ribbon源码解析

    Ribbon简介 什么是Ribbon? Ribbon是springcloud下的客户端负载均衡器,消费者在通过服务别名调用服务时,需要通过Ribbon做负载均衡获取实际的服务调用地址,然后通过http ...

  2. 2021-2022 20211420 《信息安全专业导论》安装Linux操作系统并学习Linux基础

    作业信息 |作业属于|https://edu.cnblogs.com/campus/besti/2021-2022-1fois |作业要求|https://edu.cnblogs.com/campus ...

  3. JavaScript05

    显示和隐藏 元素的显示和隐藏 元素display属性可控制元素的显示和隐藏,先获取元素对象,再通过点语法调用style对象中的display属性 语法格式: 元素.style.display='non ...

  4. Matlab/Modelsim图像联合仿真平台

    FPGA图像仿真平台 1 引言 在使用modelsim进行图像算法的功能仿真时,无法得到图像的实时预览,因此直观性有所欠缺.因此可配合matlab使用,通过modelsim读出txt格式的图像,利用m ...

  5. Java:内部类小记

    Java:内部类小记 对 Java 中的 内部类,做一个微不足道的小小小小记 首先:内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的. 成员内部类 成员内 ...

  6. UltraSoft - Beta - Postmortem事后分析

    UltraSoft - Beta - PostMORTEM 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决的问题和定义都在[软软软]功能规格说明书 ...

  7. 第一次Scrum Metting

    日期: 2021年4月23日 会议主要内容: 会议主要各自介绍一下所做任务,讨论了前后端接口定义以及服务器购买和接下来任务分配. 一.进度情况 组员 负责 两日已完成的工作 后两日计划完成的工作 工作 ...

  8. Envoy实现.NET架构的网关(三)代理GRPC

    什么是GRPC gRPC是一种与语言无关的高性能远程过程调用 (RPC) 框架.gRPC 的主要好处是: 现代.高性能.轻量级的 RPC 框架. 契约优先的 API 开发,默认使用协议缓冲区,与语言无 ...

  9. 图像原始格式(YUV444 YUV422 YUV420)一探究竟

    前段时间搞x264编码测试,传参的时候需要告诉编码器我的原始数据格式是什么,其中在x264.h头文件中定义了如下一堆类型. /* Colorspace type */ #define X264_CSP ...

  10. 验证人员应该以何种角度阅读spec

    转载:验证人员应该以何种角度阅读spec - 微波EDA网 (mweda.com) 在开发流程中,设计和验证人员关注的点肯定是不一样的,尤其在spec的理解上,验证人员往往需要有自己独立的理解.在拿到 ...