Codeforces Round #552:G. Minimum Possible LCM
官方题解是时间复杂度为O(nd)的。这里给出一个简单实现但是时间复杂度为O(NlogN) (N=1e7)
因为 a*b/gcd(a,b)=lcm(a,b) 所以我们可以枚举每一个因子,然后找到存在这个因子的 最小的两个数(只要最小的两个即可,因为后面较大数的数的lcm肯定会比较小的两个数的lcm大)。
在这些答案中取最小的即可。
代码实现也十分简洁:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e7+;
int n,a[N],c[N];
vector<int> v; int main()
{
cin>>n;
LL ans=1LL<<,r1,r2;
for (int i=;i<=n;i++) {
scanf("%d",&a[i]);
if (!c[a[i]]) c[a[i]]=i;
else if (a[i]<ans) {
ans=a[i]; r1=c[a[i]]; r2=i;
}
} for (int i=;i<N;i++) {
v.clear();
for (int j=i;j<N;j+=i) {
if (c[j]) v.push_back(j);
if (v.size()>=) break;
}
if (v.size()<) continue;
LL tmp=(LL)v[]*v[]/i;
if (tmp<ans) {
ans=tmp;
r1=c[v[]]; r2=c[v[]];
}
}
if (r1>r2) swap(r1,r2);
cout<<r1<<" "<<r2<<endl;
return ;
}
Codeforces Round #552:G. Minimum Possible LCM的更多相关文章
- Codeforces Round #552 (Div. 3) 题解
Codeforces Round #552 (Div. 3) 题目链接 A. Restoring Three Numbers 给出 \(a+b\),\(b+c\),\(a+c\) 以及 \(a+b+c ...
- Codeforces Round #552 (Div. 3) A题
题目网址:http://codeforces.com/contest/1154/problem/ 题目意思:就是给你四个数,这四个数是a+b,a+c,b+c,a+b+c,次序未知要反求出a,b,c,d ...
- Educational Codeforces Round 68 差G
Educational Codeforces Round 68 E 题意:有 n 个线段,每个都是平行 x 或者 y 轴,只有互相垂直的两线段才会相交.问形成了多少个矩形. \(n \le 5000, ...
- Educational Codeforces Round 66 差G
Educational Codeforces Round 66 F 题意:长度为 n 的序列,求有多少个区间 \([l,r]\) ,使得其构成了一个 1~r-l+1 的排列. \(n \le 3*10 ...
- Codeforces Round #552 (Div. 3) F. Shovels Shop (前缀和预处理+贪心+dp)
题目:http://codeforces.com/contest/1154/problem/F 题意:给你n个商品,然后还有m个特价活动,你买满x件就把你当前的x件中最便宜的y件价格免费,问你买k件花 ...
- Codeforces Round #552 (Div. 3) EFG(链表+set,dp,枚举公因数)
E https://codeforces.com/contest/1154/problem/E 题意 一个大小为n(1e6)的数组\(a[i]\)(n),两个人轮流选数,先找到当前数组中最大的数然后选 ...
- G. Minimum Possible LCM
https://codeforces.com/contest/1154/problem/G #include<bits/stdc++.h> using namespace std; typ ...
- Codeforces Round #552 (Div. 3) F. Shovels Shop(dp)
题目链接 大意:给你n个物品和m种优惠方式,让你买k种,问最少多少钱. 思路:考虑dpdpdp,dp[x]dp[x]dp[x]表示买xxx种物品的最少花费,然后遍历mmm种优惠方式就行转移就好了. # ...
- Codeforces Round #552 (Div. 3) F题
题目网址:http://codeforces.com/contest/1154/problem/F 题目大意:给出n,m,k,n是物体的个数,m是优惠方式的种数,k是需要购买的物体个数, 然后给出n个 ...
随机推荐
- 解压 xxxx.cpio.gz.u-boot
xxxx.cpio.gz.u-boot 为 Ramdisk 文件. 是使用u-boot源码下 tools/mkimage 工具生成的. .u-boot = 64字节的头部信息 + Filesystem ...
- shell unique
由于uniq命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文本行进行排序,使重复行集中到一起 1.文本行去重 (1)排序由于uniq命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文 ...
- eclipse设置tomcat部署目录地址
参考: https://blog.csdn.net/lvyuan1234/article/details/53418818 右键,open 操作前提是所有项目移除,并且右键clean掉相关数据! 修改 ...
- v-if-else 条件判断 是否插入元素指令
<div id="app05"> <p v-if="OK">True的时候显示,否则不显示</p> <template ...
- Linux文件归档工具——tar
Linux打包压缩命令——tar 一tar工具的介绍 Tar(Tape ARchive,磁带归档的缩写) NAME tar - manual page for tar 1.26 SYNOPSIS ta ...
- tomcat的stratup小黑框名字修改
Tomcat的bin目录下:catalina.out文件, TITLE就是Tomcat startup窗口的名称,282行默认是:Tomcat.这里建议改成“服务名+端口号”的方式,看起来一目了然.因 ...
- java com.db4o 类
<!--juan_zhai--> <dependency> <groupId>com.db4o</groupId> <artifactId> ...
- linux中软连接和硬链接的区别
linux中创建软连接和硬链接的方法: 软连接: ln -s oldfile slink 硬连接: ln oldfile hlink linux中创建软连接和硬链接的区别: 原理上,硬链 ...
- 用 Flask 来写个轻博客 (5) — (M)VC_SQLAlchemy 的 CRUD 详解
Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 SQLAlchemy 的 CRUD Create 增添数据 ...
- Openstack组件部署 — Keystone功能介绍与认证实现流程
目录 目录 前文列表 Keystone认证服务 Keystone认证服务中的概念 Keystone的验证过程 简单来说 前文列表 Openstack组件部署 - Overview和前期环境准备 Ope ...