[51nod 1421]最大MOD值
来源:互联网 发布:婚礼沙画软件 编辑:程序博客网 时间:2024/06/15 10:43
题目大意
给定序列a,求对于ai>=aj时ai mod aj的最大值。
每个数小于等于10^6。
搞一下
对于一个t,如何找到一个l>=t,使得l mod t最大?
我们枚举t的每一个倍数kt(k>1),那么就要找到小于kt的一个最大值l,即越靠近倍数肯定越优。
将a排序,然后预处理b[i]表示小于i的最大值(在a中出现的)。
注意,要预处理到2*10^6。
然后对于每一个ai,就枚举倍数统计答案。
但是当a全是1的时候显然就要T。
于是我们将a去重,那么易证复杂度就会变成log的。
#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)using namespace std;const int maxn=200000+10;int i,j,k,l,t,n,m,ans;int a[maxn],c[maxn],b[2000000+10];bool cmp(int a,int b){ return a>b;}int main(){ freopen("data.in","r",stdin); scanf("%d",&n); fo(i,1,n) scanf("%d",&a[i]); sort(a+1,a+n+1,cmp); t=unique(a+1,a+n+1)-a-1; n=t; j=1; fd(i,2000000,1){ while (j<=n&&a[j]>=i) j++; b[i]=a[j]; } fo(i,1,n) fo(j,2,2000000/a[i]) ans=max(ans,b[a[i]*j]%a[i]); printf("%d\n",ans);}
0 0
- 51nod 1421:最大MOD值
- [51nod 1421]最大MOD值
- 51nod-1421 最大MOD值
- 51nod 1421 最大MOD值
- 51Nod-1421-最大MOD值
- 【数学】51Nod 1421 最大MOD值
- 51nod 1421 最大MOD值 (暴力枚举)
- 51 nod 1421 最大mod值 思维题
- [乱搞]51 Nod 1421——最大MOD值
- 51nod 1421 最大mod值 (排序+二分搜索)
- 51NOD 1421 最大MOD值&&Codeforces 484 B. Maximum Value(筛法 + 二分)
- 51nod 1421 最大MOD值 & codeforces 485D Maximum Value(思维 数学)
- 【51Nod1421】最大MOD值
- 51nod 1046 A^B Mod C
- 51nod 1014 X^2 Mod P
- 51nod 1014 X^2 Mod P
- 51nod 1046 A^B Mod C
- 51nod 1046 A^B Mod C
- 关于内联元素间距问题的解决办法
- 移动端适配之雪碧图(sprite)背景图片定位
- C++类与对象
- 【3】数据结构与算法-3 冒泡排序算法
- C# 判断图形文件(GIF,JPG,PNG)的图片格式的方法
- [51nod 1421]最大MOD值
- .NET chart 毫秒级坐标轴
- 初始化vector
- ubuntu下使用irtulbox虚拟winxp实现360wifi热点功能
- Redis常用命令
- iOS 视屏播放软件(AVPlayer)
- MapReduce实现QQ好友推荐
- 获取 点集合 的 rect
- jms中间件整合spring