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 在设置无穷大值时中我们常 ...
随机推荐
- oozie的常见错误
1.变量或路径的英文字母写错,常常是大小写搞混,或者是字母顺序颠倒. 2.本地 oozie_works 工作目录下的文件,如job.properties,workflow.xml等,修改后,忘记上传到 ...
- mysql5.7修改账户密码
一.首次登录时,修改root账户的密码: vim /etc/my.cnf 在末尾添加 skip-grant-tables ,保存. service mysqld restart 再次登录时,不需要密码 ...
- cenos7配置confluence+mysql5.6
一.准备阶段 我的环境为 腾讯云镜像centos7.4 ,centos 内置 mariadb 需要先删除 #检查是否安装了 mariadb rpm -qa |grep mariadb #删除mari ...
- 012.CI4框架CodeIgniter, 加载并调用自己的Libraries库
01. 在Libraries目录创建一个Mylib文件,内容是一个简单的类 <?php namespace App\Controllers; class Home extends BaseCon ...
- SQLserver 存储过程生成任意进制/顺序流水号
ALTER PROCEDURE [dbo].[TentoSerial] @num int, @ret nvarchar(10) output AS declare @StringXL nvarc ...
- ubuntu---NVIDIA驱动 + CUDA 安装完可能会遇见的问题
如果稍不注意:系统内核.GCC.下载的版本不对应.安装过程中选项选择不正确,在NVIDIA驱动 + CUDA 安装完后可能会遇见一些问题. 一.登陆不进桌面 可能的操作: (1)nivida驱动安装完 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-question-sign
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- servlet3.0的文件上传代码配置怎么写
之前学习过xml配置servlet3.0的文件上传,但是变成code方式一直不知道怎么弄,相比较起来apache的文件上传配置和xml倒是没什么太大区别. 直接上代码:无需依赖,只要一个方法就好了cu ...
- 将数据写入已有的excel文件
/** * 将反馈结果写入excel中 * */ public static void writeExcelResult(String url,List<Integer> result) ...
- xv6 锁
在xv6 中锁对象是 spinlock,spinlock中的locked为1的时候表示被占用,为0的时候锁空闲. struct spinlock { uint locked; // Is the lo ...