• 牛客练习赛58 E 最大GCD


    首先很容易观察到那个 (s,t) 是假的,因为令 (s=t) 不会更劣
    然后暴力找所有因子,分别扔进一个向量里,每次询问枚举答案到向量里二分找即可
    复杂度证明考虑利用因子数量的宽界估计

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 100005;
    int n,q,a[N];
    vector<int> v[N];
    
    signed main() {
        ios::sync_with_stdio(false);
        cin>>n>>q;
        for(int i=1;i<=n;i++) cin>>a[i];
        for(int i=1;i<=n;i++) {
            for(int j=1;j*j<=a[i];j++) {
                if(a[i]%j) continue;
                v[j].push_back(i);
                v[a[i]/j].push_back(i);
            }
        }
        while(q--) {
            vector<int> s,r;
            int l,R,x;
            cin>>l>>R>>x;
            for(int j=1;j*j<=x;j++) if(x%j==0) {
                s.push_back(j);
                r.push_back(x/j);
            }
            for(int j=r.size()-1;j>=0;j--) s.push_back(r[j]);
            reverse(s.begin(),s.end());
            int flag=1;
            for(int j=0;j<s.size();j++) {
                if(s[j]>1)
                if(upper_bound(v[s[j]].begin(),v[s[j]].end(),R)
                   -upper_bound(v[s[j]].begin(),v[s[j]].end(),l-1)>0) {
                    flag=s[j];
                    break;
                   }
            }
            cout<<flag<<endl;
        }
    }
    
  • 相关阅读:
    linux三剑客
    linux用户权限
    linux文件权限
    linux目录配置
    linux命令(持续更新)
    linux外置命令
    linux日常操作指令
    晨雾

    CAPTCHA--验证码
  • 原文地址:https://www.cnblogs.com/mollnn/p/12380605.html
Copyright © 2020-2023  润新知