zoukankan      html  css  js  c++  java
  • codeforces#1183F. Topforces Strikes Back(数论)

    题目链接:

    http://codeforces.com/contest/1183/problem/F

    题意:

    给出n个数,找出最多三个互不整除的数,取最大的和

    数据范围:

    $1 le n le 2 cdot 10^5$
    $2 le a_i le 2 cdot 10^5$

    分析: 

    • 枚举第一个数为$x$
    • 去除$x$的所有倍数
    • 找到最大的数$z$
    • 去除$z$的所有约数
    • 找到最大的$y$
    • 答案为$max(x+y+z)$

    证明:第三步一定要取最大的数

    如果最大的数不是次大的数的倍数,那么直接取最大和次大肯定是最大值

    如果最大的数是次大的数的倍数,那么无论取哪两个数,它们的和都不会大于最大的数

    ac代码:

    #include<bits/stdc++.h>
    #define ll long long
    #define pa pair<int,int>
    using namespace std;
    const int maxn=2e5+10;
    const ll mod=1e9+7;
    int num[maxn],cnt,fa[maxn],ans;
    set<int>se;
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n,ans=0;
            cnt=0;
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            {
                int x;
                scanf("%d",&x);
                se.insert(x);
            }
            for(auto i:se)
                num[++cnt]=i;
            se.clear();
            for(int i=cnt;i>=1;i--)
            {
                ans=max(ans,num[i]);
                for(int j=cnt;j>i;j--)
                    if(num[j]%num[i]!=0)
                    {
                        ans=max(ans,num[i]+num[j]);
                        for(int k=j-1;k>i;k--)
                            if(num[j]%num[k]!=0&&num[k]%num[i]!=0)
                            {
                                ans=max(ans,num[i]+num[j]+num[k]);
                                break;
                            }
                        break;
                    }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    

      

  • 相关阅读:
    什么是wsgi,uwsgi,uWSGI
    Flask 和 Django 路由映射的区别
    简述浏览器通过WSGI请求动态资源的过程
    前端qq交流群
    python qq交流群
    python 魔法方法 __str__和__repr__
    python 使用for 实现死循环
    查看Django版本
    pep8 python 编码规范
    python random.randint(9,10)结果是什么?
  • 原文地址:https://www.cnblogs.com/carcar/p/11140167.html
Copyright © 2011-2022 走看看