zoukankan      html  css  js  c++  java
  • 牛客OI周赛2-提高组

    A.游戏

    链接:https://www.nowcoder.com/acm/contest/210/A
    来源:牛客网

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 131072K,其他语言262144K
    64bit IO Format: %lld

    题目描述

    BLUESKY007,fengxunling和dreagonm三个人发现了一个像素游戏,这款神奇的游戏每次会生成一个nxm的网格,其中每一个格子都被随机染色为R,G,B三种颜色之一,每次都可以选择任意一个非B颜色的格子进行一次操作,每次操作都会满足以下规则:
    1.操作的范围为从整个网格的左上角到选定方格的矩形区域
    2.操作区域内所有方格都遵循变换
    3.第一个不能执行操作的人为失败者,且按操作顺序在失败者之前的人取胜
    为了能让BLUESKY007感到快乐(照顾到BLUESKY007是个蒟蒻),fengxunling和dreagonm的操作都尽可能的让BLUESKY007取胜,她们想知道在操作顺序为的情况下,失败者是谁.

    输入描述:

    题目有多组数据
    第一行一个整数t,表示数据组数
    对于每组数据,第一行两个整数n,m,接下来n行每行m个字符

    输出描述:

    输出共t行,每行一个字符串表示答案
    示例1

    输入

    复制
    2
    3 3
    RGG
    BBG
    RRR
    3 3
    GRB
    RGR
    RBG

    输出

    复制
    dreagonm
    fengxunling

    备注:

    对于
    的数据,
     
    对于另
    的数据,
    对于
    的数据
     
    /*
    题目描述写的很清楚,三个人的操作都是为了
    BLUESKY007能赢,所以游戏一定会结束,那么当横纵坐标最大的非 B 颜色方格变为 B 颜
    色时,可操作的方格范围显然是趋向收敛的,又因为操作规则的要求,左上角的方格在每
    次操作中都会按规则进行变换,当可操作范围收敛到左上角且左上角变为 B 颜色时,游
    戏结束,所以无论中间的操作是怎样进行的,最终左上角的方格一定会变为 B 颜色,而且
    进行操作的人数和操作变换长度相同,所以只需要判断左上角方格的颜色即可
    */
    #include<bits/stdc++.h>
    
    using namespace std;
    char maze[1000+5][1000+5];
    
    int main()
    {
        int t;
        cin>>t;
        int n,m;
        while(t--)
        {
            scanf("%d%d",&n,&m);
            for(int i=0; i<n; i++)
            {
                cin>>maze[i];
            }
            if(maze[0][0]=='R') puts("dreagonm");
            else if(maze[0][0]=='G') puts("fengxunling");
            else puts("BLUESKY007");
        }
    }

    B.水果蛋糕

    链接:https://www.nowcoder.com/acm/contest/210/B

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 131072K,其他语言262144K
    64bit IO Format: %lld

    题目描述

    BLUESKY007要过生日了,为此朋友们准备给她买一个n*m的水果蛋糕qwq,但是在订蛋糕的时候却出现了问题:
    蛋糕是方形的,因为水果颗粒放整齐才好看,所以水果颗粒必须按行按列地摆放(也就是如果建立平面直角坐标系,它们的坐标必须都是整数)。
    她的朋友们想要蛋糕店多放点水果,但是由于摆放得太密集也不好看qwq,所以蛋糕店拒绝在和任意的水果颗粒相距的地方摆放水果颗粒。
    她的朋友们想知道蛋糕上最多能摆放多少水果颗粒,但是由于她们没有BLUESKY007聪(rui)慧(zhi),所以她们找到了你来帮忙

    输入描述:

    一行两个正整数n,m

    输出描述:

    一行一个整数表示答案
    示例1

    输入

    复制
    1 4

    输出

    复制
    4
    示例2

    输入

    复制
    3 4

    输出

    复制
    10

    备注:

     
    如图所示,左图为样例1的实现方案,右图为样例2的实现方案之一
    对于10%的数据,n,m≤ 5
    对于20%的数据,min(n,m)≤3,n,m≤10
    3
     
    对于100%的数据,n,m≤ 10
    9
    /*
    规律题
    */
    #include<bits/stdc++.h>
    
    using namespace std;
    int n,m;
    
    int main()
    {
        scanf("%d%d",&n,&m);
        if(n<3||m<3){printf("%lld
    ",1ll*n*m);return 0;}
        if(n>m)swap(n,m);
        if(n==4&&m==4){puts("12");return 0;}
        if(n==4&&m==5){puts("17");return 0;}
        if(n==4)
        {
            int t=m/6,r=m%6;
            long long ans=2ll*m;
            if(r==1||r==2)ans+=2*r;
            else if(r==3||r==4)ans+=4;
            else if(r==5)ans=12ll*(t+1);
            printf("%lld
    ",ans);
            return 0;
        }
        if(n==3)
        {
            int t=m/6,r=min(3,m%6);
            long long ans=m+6ll*t+2ll*r;
            printf("%lld
    ",ans);
            return 0;
        }
        cout<<(1ll*n*m+1)/2<<endl;
        return 0;
    }

    C.好朋友

    链接:https://www.nowcoder.com/acm/contest/210/C
    来源:牛客网

    时间限制:C/C++ 3秒,其他语言6秒
    空间限制:C/C++ 131072K,其他语言262144K
    64bit IO Format: %lld

    题目描述

    BLUESKY007有很多关系很好的朋友,他们无一例外,名字均由数字组成(首字符不为0)且含有"007"(例如“10007”,“10707”就是她的好朋友,而“97037”,“70709”不是),即对于字符串s存在i,j,k(i< j< k)满足
    虽然BLUESKY007眼力极佳,一眼就能看出一个人是不是自己的好朋友,但BLUESKY007是个蒟蒻,她并不擅长数数,但她又想知道在[li,ri]内有多少人是自己的好朋友,所以就找到了你来帮忙.
    她会向你询问t次,由于询问次数可能很多,所以你只需要告诉她t次询问答案的异或和即可.

    输入描述:

    第一行一个整数t,表示询问个数 
    接下来t行,每行两个整数l
    i
    ,r
    i

    输出描述:

    一行一个整数表示答案
    示例1

    输入

    复制
    3
    1 1000
    233 666
    999 999

    输出

    复制
    0

    说明

    在0~1000范围内不存在与题目要求相符的含有“007”的数,所以三次询问的答案都是0
    示例2

    输入

    复制
    3
    10000 10086
    2333 23333
    6666 66666

    输出

    复制
    132
    #include<bits/stdc++.h>
    
    #define N 500000
    
    using namespace std;
    int n,m,l,r,ans;
    int sum[N];
    
    int main()
    {
        int T;cin>>T;
        sum[1007]=1;
        sum[2007]=1;
        sum[3007]=1;
        sum[4007]=1;
        sum[5007]=1;
        sum[6007]=1;
        sum[7007]=1;
        sum[8007]=1;
        sum[9007]=1;
        sum[10007]=1;
        sum[20007]=1;
        sum[30007]=1;
        sum[40007]=1;
        sum[11007]=1;
        sum[12007]=1;
        sum[13007]=1;
        sum[14007]=1;
        sum[15007]=1;
        sum[16007]=1;
        sum[17007]=1;
        sum[18007]=1;
        sum[19007]=1;
        sum[10107]=1;
        sum[10207]=1;
        sum[10307]=1;
        sum[10407]=1;
        sum[10507]=1;
        sum[10607]=1;
        sum[10707]=1;
        sum[10807]=1;
        sum[10907]=1;
        sum[10017]=1;
        sum[10027]=1;
        sum[10037]=1;
        sum[10047]=1;
        sum[10057]=1;
        sum[10067]=1;
        sum[10077]=1;
        sum[10087]=1;
        sum[10097]=1;
            sum[11007]=1;
        sum[12007]=1;
        sum[13007]=1;
        sum[14007]=1;
        sum[15007]=1;
        sum[16007]=1;
        sum[17007]=1;
        sum[18007]=1;
        sum[19007]=1;
        sum[10107]=1;
        sum[10207]=1;
        sum[10307]=1;
        sum[10407]=1;
        sum[10507]=1;
        sum[10607]=1;
        sum[10707]=1;
        sum[10807]=1;
        sum[10907]=1;
        sum[10017]=1;
        sum[10027]=1;
        sum[10037]=1;
        sum[10047]=1;
        sum[10057]=1;
        sum[10067]=1;
        sum[10077]=1;
        sum[10087]=1;
        sum[10097]=1;
        sum[10070]=1;
        sum[10071]=1;
        sum[10072]=1;
        sum[10073]=1;
        sum[10074]=1;
        sum[10075]=1;
        sum[10076]=1;
        sum[10077]=1;
        sum[10078]=1;
        sum[10079]=1;
            sum[21007]=1;
        sum[22007]=1;
        sum[23007]=1;
        sum[24007]=1;
        sum[25007]=1;
        sum[26007]=1;
        sum[27007]=1;
        sum[28007]=1;
        sum[29007]=1;
        sum[20107]=1;
        sum[20207]=1;
        sum[20307]=1;
        sum[20407]=1;
        sum[20507]=1;
        sum[20607]=1;
        sum[20707]=1;
        sum[20807]=1;
        sum[20907]=1;
        sum[20017]=1;
        sum[20027]=1;
        sum[20037]=1;
        sum[20047]=1;
        sum[20057]=1;
        sum[20067]=1;
        sum[20077]=1;
        sum[20087]=1;
        sum[20097]=1;
        sum[20070]=1;
        sum[20071]=1;
        sum[20072]=1;
        sum[20073]=1;
        sum[20074]=1;
        sum[20075]=1;
        sum[20076]=1;
        sum[20077]=1;
        sum[20078]=1;
        sum[20079]=1;
            sum[31007]=1;
        sum[32007]=1;
        sum[33007]=1;
        sum[34007]=1;
        sum[35007]=1;
        sum[36007]=1;
        sum[37007]=1;
        sum[38007]=1;
        sum[39007]=1;
        sum[30107]=1;
        sum[30207]=1;
        sum[30307]=1;
        sum[30407]=1;
        sum[30507]=1;
        sum[30607]=1;
        sum[30707]=1;
        sum[30807]=1;
        sum[30907]=1;
        sum[30017]=1;
        sum[30027]=1;
        sum[30037]=1;
        sum[30047]=1;
        sum[30057]=1;
        sum[30067]=1;
        sum[30077]=1;
        sum[30087]=1;
        sum[30097]=1;
        sum[30070]=1;
        sum[30071]=1;
        sum[30072]=1;
        sum[30073]=1;
        sum[30074]=1;
        sum[30075]=1;
        sum[30076]=1;
        sum[30077]=1;
        sum[30078]=1;
        sum[30079]=1;
            sum[41007]=1;
        sum[42007]=1;
        sum[43007]=1;
        sum[44007]=1;
        sum[45007]=1;
        sum[46007]=1;
        sum[47007]=1;
        sum[48007]=1;
        sum[49007]=1;
        sum[40107]=1;
        sum[40207]=1;
        sum[40307]=1;
        sum[40407]=1;
        sum[40507]=1;
        sum[40607]=1;
        sum[40707]=1;
        sum[40807]=1;
        sum[40907]=1;
        sum[40017]=1;
        sum[40027]=1;
        sum[40037]=1;
        sum[40047]=1;
        sum[40057]=1;
        sum[40067]=1;
        sum[40077]=1;
        sum[40087]=1;
        sum[40097]=1;
        sum[40070]=1;
        sum[40071]=1;
        sum[40072]=1;
        sum[40073]=1;
        sum[40074]=1;
        sum[40075]=1;
        sum[40076]=1;
        sum[40077]=1;
        sum[40078]=1;
        sum[40079]=1;            
        
        for(int i=1007;i<=50000;i++) sum[i]+=sum[i-1];
        while(T--)
        {
            cin>>l>>r;
            if(l<=1000 && r<=1000) ans^=0; 
            else if(l<=50000 && r<=50000)
            ans^=sum[r]-sum[l-1];
        }
        printf("%d
    ",ans);
        return 0;
    }
    40打了个表...
    /*
    因为"好朋友"的定义为含有"007",所以有很多情况都会被视为含有"007",例如
    "10707","17007"等,此时我们发现对于含有"007"的情况的讨论比较复杂,所以我们不
    妨讨论不含"007"的情况,也即对于任意的含有 7 的数,其中每一个7前都至多有2个0 ,
    由此可以设f[i][j]表示在前 i 位有 j 个 0 的数的个数,在数位DP过程中存当前位置和已有
    的 0 的个数,显然在 0 的个数>=2时,后面的数位上都不可能再有7.在求出不含"007"的
    数之后,用总数减掉即可。 
    */
    #include<bits/stdc++.h>
    
    #define ll long long
    
    using namespace std;
    
    ll l,r,ans,f[20][4],d[20];
    int t,m,i,j,k,x,a[20];
    
    ll work(ll n)
    {
        if(n<1000)return 0;
        for(m=0;n;n/=10)a[m++]=n%10;
        reverse(a,a+m);
        memset(f,0,sizeof(f));
        f[1][0]=a[0]-1;
        x=0;
        for(i=1;i<m;i++)
        {
            f[i+1][0]=f[i][0]*9;
            f[i+1][1]=f[i][0]+f[i][1]*9;
            f[i+1][2]=f[i][1]+f[i][2]*9;
            f[i+1][3]=f[i][2]+f[i][3]*10;
            f[i+1][x]+=a[i]-1;
            f[i+1][x+(x<2&&a[i]||x==2&&a[i]>7)]++;
            if(x<2&&!a[i]||x==2&&a[i]==7)x++;
        }
        return d[m-1]+f[m][3];
    }
    
    int main()
    {
        for(i=0,l=1;i<=18;i++,l*=10)d[i]=work(l-1);
        scanf("%d",&t);
        while(t--)
        {
            scanf("%lld%lld",&l,&r);
            ans^=work(r+1)-work(l);
        }
        cout<<ans<<endl;
        return 0;
    }
    
    
  • 相关阅读:
    HttpClient入门三
    Centos常用命令之:压缩与解压缩
    Centos常用命令之:搜索
    Centos常用命令之:ln
    Centos常用命令之:VI
    HttpClient入门二
    NX二次开发-UFUN确定两个向量在指定的公差内是否相等(二维向量)UF_VEC2_is_equal
    NX二次开发-UFUN确定两个向量在指定的公差内是否相等(三维向量)UF_VEC3_is_equal
    NX二次开发-NXOPEN C#UF创建块theUfSession.Modl.CreateBlock1
    NX二次开发-NXOpen C# UF函数例子目录【更新日期2020.7.21】
  • 原文地址:https://www.cnblogs.com/L-Memory/p/9789166.html
Copyright © 2011-2022 走看看