[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 ...
随机推荐
- SpringBoot入门04-组件扫描ComponetScan
被扫描的包下面的类如果被下面注解,则被创建加入到IOC中去 @Component:没有明确的角色 @Service:业务层角色 @Repository:持久层角色 @Controller:控制层角色 ...
- Java(28)集合三Map
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228436.html 博客主页:https://www.cnblogs.com/testero ...
- Java:NIO 学习笔记-1
Java:NIO 学习笔记-1 说明:本笔记是根据bilibili上 尚硅谷 的课程 NIO视频 而做的笔记 主要内容 Java NIO 简介 Java NIO 与 IO 的主要区别 缓冲区(Buff ...
- mipi csi接口,1条lane支持多少像素,200w像素需要几条lane,为什么,怎么计算出来的?谢谢!
按帧频FRAME=60HZ, 分辨率480*800来计算;以WVGA 显示分辨率,24BIT图片,60幁为例,在理想状态下(未包含RGB信号前后肩宽度),总传输速率最小为:480*800*8BIT*3 ...
- 洛谷 P3209 [HNOI2010] 平面图判定
链接: P3209 题意: 给出 \(T\) 张无向图 \((T\leq100)\),并给出它对应的哈密顿回路,判断每张图是否是平面图. 分析: 平面图判定问题貌似是有线性做法的,这里给出链接,不是本 ...
- 2021NOI同步赛
\(NOI\) 网上同步赛 明白了身为菜鸡的自己和普通人的差距 DAY1 \(T1\) 轻重边 [题目描述] 小 W 有一棵 \(n\) 个结点的树,树上的每一条边可能是轻边或者重边.接下来你需要对树 ...
- 转:bash shell 语法1
1 Shell介绍 Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batc ...
- linux rtl8188eu ap模式 密码错误 disassoc reason code(8)
2018-05-30 14:12:46 于深圳南山科技园 最近有个项目,客户需要通过手机app通过机器wifi热点连接,从而实现对机器的设置及视频的实时预览等各种功能.这两天一直在搞rtl8188eu ...
- poj 3041 Asteroids(最小点覆盖)
题意: N*N的矩阵,有K个敌人,坐标分别是(C1,C1),.....,(Rk,Ck). 有一个武器,每发射一次,可消掉某行或某列上的所有的敌人. 问消灭所有敌人最少需要多少发. 思路: 二分建图:左 ...
- linux 内核源代码情景分析——越界访问
页式存储管理机制通过页面目录和页面表将每个线性地址转换成物理地址,当遇到下面几种情况就会使CPU产生一次缺页中断,从而执行预定的页面异常处理程序: ① 相应的页面目录或页表项为空,也就是该线性地址与物 ...