zoukankan      html  css  js  c++  java
  • 51nod 1421 最大MOD值

    分析:首先去重排序,然后枚举a[i]的倍数,找到最大的a[j],使得a[j]小于a[i]的倍数,用二分法找,然后更新一下最大值。枚举a[i]和倍数复杂度为O(nlogn),二分O(logn),总的为O(n(logn)^2)。

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 using namespace std;
     5 const int maxn=200005;
     6 int a[maxn],n;
     7 bool have[5*maxn];
     8 inline int Dich(int t,int l){
     9     if(a[n-1]<=t)return a[n-1];
    10     if(a[l]>t)return a[l-1];
    11     int r=n-1,m=(r+l)/2;
    12     while(l<r&&l!=m){
    13         if(a[m]==t)return a[m];
    14         if(a[m]>t)r=m;
    15         else l=m;
    16         m=(l+r)/2;
    17     }
    18     return a[m];
    19 }
    20 int main(){
    21     cin>>n;
    22     int v;
    23     memset(have,0,sizeof(have));
    24     for(int i=0;i<n;i++){
    25         cin>>v;
    26         if(have[v]){
    27             n--;i--;
    28             continue;
    29         }
    30         a[i]=v;
    31         have[v]=true;
    32     }
    33     sort(a,a+n);
    34     int ans=0;
    35     for(int i=0;i<n;i++){
    36         int t=a[i]*2;
    37         do{
    38             int k=Dich(t-1,i+1)%a[i];
    39             if(k>ans)ans=k;
    40         }while((t+=a[i])<=a[n-1]);
    41     }
    42     cout<<ans<<endl;
    43     return 0;
    44 }
  • 相关阅读:
    [转]跨语言通信方案比较
    C#三种定时器
    Java优化技巧
    websocket初探
    [转]远远走来一个绿茶婊
    赠与今年的大学毕业生-----------胡适
    HDU3068 回文串 Manacher算法
    OpenCV安装与配置
    tkinter事件机制
    哈夫曼压缩
  • 原文地址:https://www.cnblogs.com/7391-KID/p/7071784.html
Copyright © 2011-2022 走看看