51nod 1421:最大MOD值
有一个a数组,里面有n个整数。现在要从中找到两个数字(可以是同一个) ,使得
最大并且
。
单组测试数据。
第一行包含一个整数n,表示数组a的大小。(1 ≤ n ≤ 2*10^5)
第二行有n个用空格分开的整数ai (1 ≤ ai ≤ 10^6)。
输出一个整数代表最大的mod值。
3
3 4 5
2
再一次觉得51nod与codeforces上的题目趣味性很浓很有意思,这题一看5级的算法题的话,想一想暴力就一定要TLE。。。
所以就一直没能想出好的方法,看了别人的思路之后才发现很有趣(对,我就是这么弱啊。。。)
5 6 7 8 9这样的序列只对于5来说的话,求对5的mod最大值,会发现其实并不需要求6%5,7%5,8%5,我只需要求5和10之间最大的那一个就可以,如果还有更大的就求10到15之间最大的,以此类推下去。
所以这道题也是这样,不用逐一暴力,只需对每一个Ai,挑选合适的Aj就好,时间就能省下来了。
代码:
#include <cmath>
#include <cctype>
#include <cstdio>
#include <string>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int n,a[200048]={0},ans=0; int main()
{
scanf("%d",&n);
for(int i=0;i<n;++i) scanf("%d",&a[i]);
sort(a,a+n);
for(int i=0;i<n-1;++i)
if(i==0||a[i]!=a[i-1])
{
int j=a[i]+a[i],p;
while(j <= a[n-1])
{
p = lower_bound(a,a+n,j)-a;
if(p > 0) ans=max(ans,a[p-1]%a[i]);
j+=a[i];
}
ans=max(ans,a[n-1]%a[i]);
}
printf("%d\n",ans);
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
51nod 1421:最大MOD值的更多相关文章
- 51nod 1421 最大MOD值(高妙的调和级数复杂度)
有一个a数组,里面有n个整数.现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 ai ≥ aj. Input 单组测试数据. 第一行包含一个整数n,表示数组a的 ...
- 51nod 1421 最大MOD值 | 暴力
题面 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 ai ≥ aj. Input 单组测试数据. 第一行包含一个整数n,表示数 ...
- 51 nod 1421 最大MOD值
1421 最大MOD值 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以 ...
- 1421 最大MOD值
1421 最大MOD值 基准时间限制:1 秒 空间限制:131072 KB 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 a ...
- 51nod1421 最大MOD值
O(n2)tle.O(nlognlogn) #include<cstdio> #include<cstring> #include<cctype> #include ...
- 51Nod 1421
1421 最大MOD值 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 ai ≥ aj. Input 单组测试数据. 第一行包含 ...
- 51Nod 1004 n^n的末位数字(日常复习快速幂,莫名的有毒,卡mod值)
1004 n^n的末位数字 题目来源: Author Ignatius.L (Hdu 1061) 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数N,输出 ...
- 关于程序设计中经常出现的INF和MOD值的设定
摘自:https://www.cnblogs.com/gfvod/p/5548313.html 在取模操作中,我们常把MOD设置为1000000007,模一个大数和模一个质数可以减少冲突,而1e9+7 ...
- 关于程序设计中INF和MOD值的设定
在取模操作中,我们常把MOD设置为1000000007 模一个大数和模一个质数可以减少冲突 而1e9+7又有一个很好的特点,就是相加不会爆int,相乘不会爆long long 在设置无穷大值时中我们常 ...
随机推荐
- 5G/NR 帧结构
原文链接:http://www.sharetechnote.com/html/5G/5G_FrameStructure.html 在学术界和3GPP中对帧结构进行了长时间的讨论,现在我们就NR(5G) ...
- SpringCloud实战——(1)创建SpringCloud项目
首先创建一个SpirngCloud工程,并添加公用依赖. <?xml version="1.0" encoding="UTF-8"?> <pr ...
- 南邮平台之Hello,RE!
小白闲逛了一下南邮平台看到了逆向这题,小白在网上看了一下别人的write up发现有点复杂.于是小白就试试看,直接Underfine然后结果就出来了.....有点意外...... 结果flag{Wel ...
- Oracle删除重复数据并且只留其中一条数据
数据库操作中,经常会因为导数据造成数据重复,需要进行数据清理,去掉冗余的数据,只保留正确的数据 一:重复数据根据单个字段进行判断 1.首先,查询表中多余的数据,由关键字段(name)来查询. sele ...
- es和数据类型
js=es+dom+bom,dom和bom前面已经讲完了 es是js的本体,是指数据类型,和对于数据的操作手段,他的版本更新得很快 这些功能不是html文件提供的,也不是浏览器提供的,即使脱离了dom ...
- javascript中退出语句break,continue和return 比较
在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止. 首先:break和continue两个 ...
- 自制spring中bean加载机制,仅做笔记自用
- mapper语句的一些问题,union连表查询和mapper中根据条件不同采用不同语句的查询问题
根据业务要求,不同表查出来的内容天需要一起展示出来,并且还有分页之类的,不同表查询字段也不完全相同,这样就有一个问题,不同表如何接合在一起,不同字段怎么办? 这个问题就需要用到union联合查询,并将 ...
- CSS - input 只显示下边框
CSS 样式 : border:none; border-bottom: 1px solid #000
- swoole在线聊天学习笔记
<?php $http=); $http->on('request',function(swoole_http_request $request,swoole_http_response ...