zoukankan      html  css  js  c++  java
  • Codeforces Contest 870 前三题KEY

    A. Search for Pretty Integers:

    题目传送门

    题目大意:给定N和M个数,从前一个数列和后一个数列中各取一个数,求最小值,相同算一位数。

    一道水题,读入A、B数组后枚举i、j判断最小值即可,注意相同时只需要一位。

    B. Maximum of Maximums of Minimums:

    题目传送门

    题目大意:给定N和K,表示一个有N个数的数列和可以分成K段,使每一段中的最小值最大。

    分类讨论,有三种情况:

      ·K=1,取最小值。

      ·K=2,分成两段取两段最小值的最大值。

      ·K>=3,输出最大值。

    相信很多人对K>=3这一定不是很懂,因为K>=3,所以可以把原数列的最大值单独拆一个,所以一定是最优解。

    C. Maximum splitting:

    题目传送门

    题目大意:给定Q个数,求每个数最多能由几个合数组成。

    如果数学好的同学应该知道,肯定是由4、6、9构成最多。

    对于每个数Qi,有以下几种情况:

      ·Qi%4==0,输出Qi/4;

      ·Qi%4==1,我们需要拿2个4和这个1组成9,所以如果Qi/4>=2输出Qi/4-1,不然输出-1;

      ·Qi%4==2,我们需要拿1个4和这个2组成6,所以如果Qi/4>=1输出Qi/4,不然输出-1;

      ·Qi%4==3,因为3=1+2,所以我们需要拿3个4和这个3组成6和9,所以如果Qi/4>=3输出Qi/4-2,不然输出-1;

    Code:

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    int N,M,a[10],b[10];
    int main(){
        scanf("%d%d",&N,&M);
            for(int i=1;i<=N;i++)scanf("%d",&a[i]);
            for(int i=1;i<=M;i++)scanf("%d",&b[i]);
        int ans=2e9;
            for(int i=1;i<=N;i++)
                for(int j=1;j<=M;j++){
                    if(a[i]==b[j])ans=min(ans,a[i]);
                    else ans=min(ans,min(a[i]*10+b[j],b[j]*10+a[i]));
                }
        printf("%d",ans);
        return 0;
    }
    Problem A
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    int N,K,a[100005],min1[100005],min2[100005],wcc=2e9,wccc=-2e9;
    int main(){
        scanf("%d%d",&N,&K);
            for(int i=1;i<=N;i++)scanf("%d",&a[i]),wcc=min(wcc,a[i]),wccc=max(wccc,a[i]);
        if(K==1){printf("%d",wcc);return 0;}
        if(K==2){
            memset(min1,63,sizeof(min1));
            memset(min2,63,sizeof(min2));
            for(int i=1;i<=N;i++)min1[i]=min(min1[i-1],a[i]);
            for(int i=N;i>=1;i--)min2[i]=min(min2[i+1],a[i]);
            int ans=-2e9;
                for(int i=1;i<=N;i++)ans=max(ans,max(min1[i],min2[i]));
            printf("%d",ans);
            return 0;
        }
        printf("%d",wccc);
        return 0;
    }
    Problem B
    #include <cstdio>
    using namespace std;
    int Query,x;
    int main(){
        scanf("%d",&Query);
            for(;Query;--Query){int o=0;
                scanf("%d",&x);
                if(x%4==1){o=1;if(x/4<2){printf("-1
    ");continue;}}
                if(x%4==2&&x/4<1){printf("-1
    ");continue;}
                if(x%4==3){o=1;if(x/4<3){printf("-1
    ");continue;}}
                printf("%d
    ",x/4-o);
            }
        return 0;
    }
    Problem C
  • 相关阅读:
    QFramework 使用指南 2020(二):下载与版本介绍
    QFramework 使用指南 2020 (一): 概述
    Unity 游戏框架搭建 2018 (二) 单例的模板与最佳实践
    Unity 游戏框架搭建 2018 (一) 架构、框架与 QFramework 简介
    Unity 游戏框架搭建 2017 (二十三) 重构小工具 Platform
    Unity 游戏框架搭建 2017 (二十二) 简易引用计数器
    Unity 游戏框架搭建 2017 (二十一) 使用对象池时的一些细节
    你确定你会写 Dockerfile 吗?
    小白学 Python 爬虫(8):网页基础
    老司机大型车祸现场
  • 原文地址:https://www.cnblogs.com/Cptraser/p/7677244.html
Copyright © 2011-2022 走看看