zoukankan      html  css  js  c++  java
  • 【CQ18高一暑假前挑战赛3】标程

    【A:LCM】

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    int main()
    {
        ll a,b,g;
        cin>>a>>b;
        g=__gcd(a,b);
        cout<<a/g*b<<endl;
        return 0;
    }

    【B:STL,用set或者queue+map都行】

    #include<bits/stdc++.h>
    using namespace std;
    #define ll unsigned long long
    const int maxn=100010;
    const ll inf=1e18;
    ll a[maxn]; int cnt;
    set<ll>s;
    void solve()
    {
        s.insert(2); s.insert(3); s.insert(5);
        while(!s.empty()){
            ll now=*s.begin();
            a[++cnt]=now; s.erase(s.begin());
            if(now*2<=inf) s.insert(now*2);
            if(now*3<=inf) s.insert(now*3);
            if(now*5<=inf) s.insert(now*5);
        }
    }
    int main()
    {
        solve();
        int T; ll N;
        scanf("%d",&T);
        while(T--){
            scanf("%lld",&N);
            int pos=lower_bound(a+1,a+cnt+1,N)-a;
            printf("%lld
    ",a[pos]);
        }
        return 0;
    }

    【C:贪心水题】

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=100010;
    int a[maxn];
    int main()
    {
        int N,M,i,j,ans=0;
        scanf("%d%d",&N,&M);
        for(i=1;i<=N;i++) scanf("%d",&a[i]);
        sort(a+1,a+N+1);
        j=1;
        for(i=N;i>=j;i--){
            if(i!=j&&a[i]+a[j]<=M) j++;
            ans++;
        }
        printf("%d
    ",ans);
        return 0;
    }

    【D:暴力求得每个数的因子,复杂度O(Nsqrrt(N))】

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1000010;
    int num[maxn];
    int main()
    {
        int N,x,i,j,ans=0;
        scanf("%d",&N);
        for(i=1;i<=N;i++){
            scanf("%d",&x);
            for(j=1;j*j<=x;j++){
                if(x%j==0){
                   num[j]++; if(num[j]>1) ans=max(ans,j);
                   if(j*j!=x) {
                       num[x/j]++; if(num[x/j]>1) ans=max(ans,x/j);
                   }
                }
            }
        }
        printf("%d
    ",ans);
        return 0;
    }

    【E:区间DP,和前天那个有点像】

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    const int maxn=510;
    ll sum[maxn][maxn];
    int ans,x;
    int main()
    {
        int N,M,i,j,k;
        while(~scanf("%d%d",&M,&N)){
            ans=0;
        for(i=1;i<=N;i++)
          for(j=1;j<=M;j++) 
           scanf("%d",&x),sum[i][j]=sum[i-1][j]+x;
        for(i=1;i<=N;i++)
          for(j=i;j<=N;j++){
             int tmp=0;
             for(k=1;k<=M;k++){
                 tmp+=sum[j][k]-sum[i-1][k];
                 if(tmp<0) tmp=0;
                 if(tmp>ans) ans=tmp;
             }
        }
        printf("%d
    ",ans);
       }
        return 0;
    }

    【F:KMP】

    请先自学吧。

  • 相关阅读:
    购物菜单
    数据库
    增删改查
    页面交互
    计算器
    2020.9.21
    团队-团队编程项目中国象棋-项目总结
    团队-团队编程项目作业名称-最终程序
    课后作业-阅读任务-阅读提问-4
    《20171130-构建之法:现代软件工程-阅读笔记》
  • 原文地址:https://www.cnblogs.com/hua-dong/p/9139117.html
Copyright © 2011-2022 走看看