• 数字对


    源代码:
    
    #include<cstdio>
    #include<vector>
    #include<algorithm>
    using namespace std;
    struct Node
    {
        int S,P;
    }i[500001];
    vector <int> List[500001];
    int n,Ans(0),f[500001],F[500001];
    bool Vis[500001]={0};
    bool Rule(Node t1,Node t2)
    {
        return t1.S<t2.S;
    }
    int main() //乱搞的竟然能过,数据太水了。
    {
        scanf("%d",&n);
        for (int a=1;a<=n;a++)
        {
            scanf("%d",&f[a]);
            i[a].S=f[a];
            i[a].P=a;
        }
        sort(i+1,i+n+1,Rule);
        for (int a=1;a<=n;a++)
        {
            int Left=i[a].P-1,Right=i[a].P+1;
            Vis[i[a].P]=true;
            while (Left&&!Vis[Left]&&!(f[Left]%i[a].S))
              Left--;
            while (Right<=n&&!Vis[Right]&&!(f[Right]%i[a].S))
              Right++;
            Left++;
            Right--; //细节还得注意。
            if (Ans<=Right-Left)
            {
                Ans=Right-Left;
                List[Ans].push_back(Left);
            }
        }
        int Sum=List[Ans].size();
        sort(List[Ans].begin(),List[Ans].end()); //返回的是迭代器位置。
        printf("%d %d
    ",Sum,Ans);
        for (int a=0;a<Sum;a++)
          printf("%d ",List[Ans][a]);
        return 0;
    }
    
    /*
        不难发现,从最小的数开始枚举最优,所以升序检验。
        且易得,最小的找过后就绝对不会再找了,因为模不了,打上标记。
    */
  • 相关阅读:
    HDU
    hdu-1260 tickets
    hdu-1024 Max Sum Plus Plus
    spfa+链式前向星模板
    kafka-伪集群搭建
    elasticsearch-安装-centos7- es7.5 搭建
    elk-安装 通过docker
    kibana-安装-通过docker
    logstash -grok插件语法介绍
    docker 启动redis/nginx
  • 原文地址:https://www.cnblogs.com/Ackermann/p/6065721.html
Copyright © 2020-2023  润新知