技术标签: 巧妙暴力
...这题关键在他的a[i]<=1e7
那么我们知道lcm(a,b)=a*b/gcd(a,b);
那么我们只要枚举每一个因数d,不管他是不是gcd
然后找出能被这个d整除的最小的两个数字a,b
那么对于这个因数d,tmp=a*b/d,ans=min(ans,tmp)
由于我们枚举了1-1e7所有的质因子,所以就算a*b/d不是lcm,但之后总会枚举到a*b/gcd(a,b)
而使用桶来装数字并查找d的倍数的的最小两个,复杂度为 1e7/d
那么总复杂度就是调和级数和 nlnn ,最后我程序跑出来是1.4s, 而时限是4s
#include<bits/stdc++.h>
#define maxl 10000010
using namespace std;
int n,l,r;
int a[maxl];
int num[maxl][2],cnt[maxl];
long long ans;
inline void prework()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
++cnt[a[i]];
if(cnt[a[i]]==1)
num[a[i]][0]=i;
if(cnt[a[i]]==2)
num[a[i]][1]=i;
}
}
inline long long gcd(long long a,long long b)
{
return b==0 ? a:gcd(b,a%b);
}
inline void mainwork()
{
ans=1ll*a[1]/gcd(a[1],a[2])*a[2];
l=1;r=2;int sum,ll,rr;long long tmp;
for(int d=1;d<maxl;d++)
{
sum=0;tmp=1;
for(int j=d;j<maxl;j+=d)
{
if(cnt[j]>=2)
{
if(sum==1)
sum++,rr=num[j][0];
if(sum==0)
sum+=2,ll=num[j][0],rr=num[j][1];
}
else if(cnt[j]==1)
{
sum++;
if(sum==1) ll=num[j][0];
if(sum==2) rr=num[j][0];
}
if(sum==2)
{
tmp=1ll*a[ll]*a[rr]/d;
if(tmp<ans)
{
ans=tmp;
l=ll;r=rr;
}
break;
}
}
}
}
inline void print()
{
if(l>r) swap(l,r);
printf("%d %d",l,r);
}
int main()
{
prework();
mainwork();
print();
return 0;
}
文章浏览阅读3.7w次,点赞9次,收藏64次。延迟模块单位延迟模块延迟模块具有复位功能,当满足复位条件时会进行复位操作,即输出的值会恢复到初始值,而单位延迟模块没有复位功能;延迟模块的步长是可以设置的,而单位延迟模块的步长固定为1,不可以改变..._unit delay
文章浏览阅读3k次,点赞2次,收藏12次。前言众所周知,机器学习和深度学习工作流中最困难的部分之一,就是为模型找到最好的超参数,机器学习和深度学习模型的性能与超参数直接相关。维基百科上说,“ Hyperparameter optimization 或 tuning 是为学习算法选择一组最优的hyperparameters 的问题”。超参数调优的越好,得到的模型就越好。调优超参数可能是非常乏味和困难的,更像是一门艺术而不是科学。超参数(Hyperparameters)超参数是在建立模型时用于控制算法行为的参数。这些参数不能从常规训练过_hyperparams
文章浏览阅读4.5k次。注:该文章系转载所得,转载连接:https://www.cnblogs.com/eva0/p/7128068.html。本人亲试方法二、三,均有效,但方法二最为方便快捷,推荐!有时候我们再重新安装Cadence之后,双击打开DNS原理图文件或者brd的PCB文件,发现没有打开对应文件,反而是新建了一个新文件,必须重新取消保存新文件并且从菜单操作打开对应文件,很麻烦我们要解决这个问题,需要修..._如何更改注册表让双击可以启动candence
文章浏览阅读186次。(1)新增一个activity 1 package com.xxxx.activity; 4 5 public interface FragmentCallBack { 7 8 public MainActivity getMainActivity(); 9 10 }(2)在MainActivity 的Java文件中增加g..._android fragment中使用showmsg
文章浏览阅读321次。然而,正因为情感的短暂性,对于情感的认知和理解需要灵活和细致的观察和分析,不能简单地将情感状态视为恒定的或永久的。然而,需要注意的是,爱情和爱河并非单一的概念,每个人对它们的理解和体验可能有所不同。情感和感情的融合是人类存在的基本特征之一,它们在我们的生活中起着重要的作用。最重要的是,相信自己的直觉和内心的感受。在追求爱情的过程中,保持自我价值和尊严,不断学习和成长,能够帮助我们区分真假爱情,并最终找到真正的幸福。例如,柏拉图的爱的观念认为,真正的爱应该是理性的、追求美善的,并超越个人欲望的。
文章浏览阅读1w次,点赞4次,收藏7次。今天安装pm2碰到一个问题,使用npm install pm2 -g安装完成时,找不到pm2命令:在安装提示中可以看到pm2安装位置,此时我们只要使用以下命令将pm2放入系统路径下就可以了:ln -s /home/soft/elk/node-v8.11.3-linux-x64/bin/pm2 /usr/local/bin/..._linux安装pm2后,未找到命令
文章浏览阅读8.8k次。#!/usr/bin/python#-*-coding:utf-8-*- #指定编码格式,python默认unicode编码 import osdirectory = "./dir"os.chdir(directory) #切换到directory目录cwd = os.getcwd() #获取当前目录即dir目录下print("-------------------..._python 删除大小为0的文件
文章浏览阅读2.7k次。欢迎关注”生信修炼手册”!在单层感知器的基础上,引入隐藏层即可得到多层感知器和深度神经网络,结构如下在上述网络中,信号从输入层开始,经过线性组合和激活函数的处理,输入到下一层的神经元,信号...
文章浏览阅读629次。每个工作流工作打印了多少次了,在OA里不知道,如何能够控制呢,今天小飞鱼带给大家的就是这个工作量打印次数统计控制程序,使用起来是不是会方便很多。可以查询打印日志明细。打印页面上多了一个打印按钮和流水号、打印次数的信息。 点击打印按钮后,弹出打印预览界面可以进行打印。并且打印按钮消失不能重复进行打印,打印计数进行记录。看图不过瘾,来段视频看一下https://..._oa流程批量打印
文章浏览阅读5.1k次。在做C#与其它程序通信的系统时,往往会使用struc操作结构化的数据(如数据包等)。本文简要提出一些使用思路,欢迎各位大牛赐教。 一、STRUCT结构设计当数据的结构确定时,总结为下面两种情况:1、数据长度确定(包括字符串):此时可以直接利用struct来构造数据包,比如: [StructLayout(LayoutKind._c# struct 数据对齐
文章浏览阅读814次。「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果。我们一直认为,单向地输出知识并不是一个最好的方式,而..._张帅,北航研究生
文章浏览阅读3.7k次。 想要让窗口在最上面,在Delphi下很容易实现,把窗口的FormStyle属性设为fsStayOnTop就可以了。但是这样有一个问题,那就是,有一些桌面的小精灵总是会盖不住,如迅雷啊,网际快车啊什么的,这里可以使用Win32 API函数来解决这个问题:SetWindowPos( Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or S_谷歌钉住插件可以把页面固定在桌面上吗