• 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
  • 相关阅读:
    js Math对象
    extjs 获取Dom对象
    easyui validatebox 验证集合
    Ext.Ajax.request与form.submit的用法区别
    js获取url参数值
    【原创】extjs4做的grid,带分页,搜索
    SqlServer2005数据库同步
    【原创】jquery实现动态多组图片切换
    easyui表单数据验证
    对象模型图【OMD】阅读指南
  • 原文地址:https://www.cnblogs.com/Cptraser/p/7677244.html
Copyright © 2020-2023  润新知