[cf1285F]Classical
先枚举$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的更多相关文章
- JavaScript Patterns 6.2 Expected Outcome When Using Classical Inheritance
// the parent constructor function Parent(name) { this.name = name || 'Adam'; } // adding functional ...
- What is classical music
quanben's definition of classical music is a definition formed by the following aspects, 1. music wr ...
- Classical Inheritance in JavaScript
JavaScript is a class-free, object-oriented language, and as such, it uses prototypal inheritance in ...
- 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 目标端 ...
- How does Circus stack compare to a classical stack?
Frequently Asked Questions - Circus 0.15.0 documentation https://circus.readthedocs.io/en/latest/faq ...
- 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 ...
- The 50 Most Essential Pieces of Classical Music
1. Die Zauberflöte ("The Magic Flute"), K. 620: Overture London Philharmonic Orchestra 7:2 ...
- Classical Binary Search
Find any position of a target number in a sorted array. Return -1 if target does not exist. 与题目 Firs ...
- Classical method of machine learning
PCA principal components analysis kmeans bayes spectral clustering svm EM hidden Markov models deep ...
随机推荐
- 超详细的Ribbon源码解析
Ribbon简介 什么是Ribbon? Ribbon是springcloud下的客户端负载均衡器,消费者在通过服务别名调用服务时,需要通过Ribbon做负载均衡获取实际的服务调用地址,然后通过http ...
- 2021-2022 20211420 《信息安全专业导论》安装Linux操作系统并学习Linux基础
作业信息 |作业属于|https://edu.cnblogs.com/campus/besti/2021-2022-1fois |作业要求|https://edu.cnblogs.com/campus ...
- JavaScript05
显示和隐藏 元素的显示和隐藏 元素display属性可控制元素的显示和隐藏,先获取元素对象,再通过点语法调用style对象中的display属性 语法格式: 元素.style.display='non ...
- Matlab/Modelsim图像联合仿真平台
FPGA图像仿真平台 1 引言 在使用modelsim进行图像算法的功能仿真时,无法得到图像的实时预览,因此直观性有所欠缺.因此可配合matlab使用,通过modelsim读出txt格式的图像,利用m ...
- Java:内部类小记
Java:内部类小记 对 Java 中的 内部类,做一个微不足道的小小小小记 首先:内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的. 成员内部类 成员内 ...
- UltraSoft - Beta - Postmortem事后分析
UltraSoft - Beta - PostMORTEM 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决的问题和定义都在[软软软]功能规格说明书 ...
- 第一次Scrum Metting
日期: 2021年4月23日 会议主要内容: 会议主要各自介绍一下所做任务,讨论了前后端接口定义以及服务器购买和接下来任务分配. 一.进度情况 组员 负责 两日已完成的工作 后两日计划完成的工作 工作 ...
- Envoy实现.NET架构的网关(三)代理GRPC
什么是GRPC gRPC是一种与语言无关的高性能远程过程调用 (RPC) 框架.gRPC 的主要好处是: 现代.高性能.轻量级的 RPC 框架. 契约优先的 API 开发,默认使用协议缓冲区,与语言无 ...
- 图像原始格式(YUV444 YUV422 YUV420)一探究竟
前段时间搞x264编码测试,传参的时候需要告诉编码器我的原始数据格式是什么,其中在x264.h头文件中定义了如下一堆类型. /* Colorspace type */ #define X264_CSP ...
- 验证人员应该以何种角度阅读spec
转载:验证人员应该以何种角度阅读spec - 微波EDA网 (mweda.com) 在开发流程中,设计和验证人员关注的点肯定是不一样的,尤其在spec的理解上,验证人员往往需要有自己独立的理解.在拿到 ...