Codeforces Round #444 (Div. 2)

来源:互联网 发布:笔记本密码重设软件 编辑:程序博客网 时间:2024/05/22 13:00

icpc后的第一场cf,6000+人,似乎是个涨粉的好机会,然而时间段确实比较坑,昨晚凌晨3点,有点尴尬


这场其实完全就是手速场了,三道签到题,然而我却wa了两发,还是交题之前一定要谨慎啊,细节决定成败


1.5h做完后,实在太困了,剩余1h直接睡觉了,要不然开启hack模式,似乎会比较有趣


看看这三题吧


A. Div. 64

思路:这题真心纯签到啊,统计非前导0的个数,不小于6则yes,小于则no


#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 110;char num[maxn];int main(){    while(scanf("%s",num)!=EOF)    {        int len = strlen(num);        bool st = false;        int sum = 0;        for(int i=0;i<len;i++)        {            if(num[i]=='1')            {                st = true;            }            else            {                if(st)                {                    sum++;                }            }        }        if(sum >= 6)        {            printf("yes\n");        }        else        {            printf("no\n");        }    }    return 0;}


B. Cubes for Masha

思路:这题,统计所有可能的数组合,思路一定要清晰啊,位数问题与前导0,这场考了很多前导0问题,而纯暴力似乎有的时候也挺奏效

#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1e5+10;bool cube[3][10];bool num[1000];int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        memset(cube,false,sizeof(cube));        memset(num,false,sizeof(num));        for(int i=0;i<n;i++)        {            for(int j=0;j<6;j++)            {                int temp;                scanf("%d",&temp);                cube[i][temp] = true;            }        }        if(n==1)        {            for(int i=0;i<10;i++)            {                if(cube[0][i])                {                    num[i] = true;                }            }        }        else if(n==2)        {            for(int j=0;j<2;j++)            {                for(int i=0;i<10;i++)                {                    if(cube[j][i])                    {                        num[i] = true;                    }                }            }            for(int j=0;j<10;j++)            {                for(int k=0;k<10;k++)                {                    if(cube[0][j]&&cube[1][k])                    {                        num[j+k*10] = true;                        num[k+j*10] = true;                    }                }            }        }        else        {            for(int i=0;i<3;i++)            {                for(int j=0;j<10;j++)                {                    if(cube[i][j])                    {                        num[j] = true;                    }                }                for(int j=0;j<10;j++)                {                    for(int k=0;k<10;k++)                    {                        if(cube[(i+1)%3][j]&&cube[(i+2)%3][k])                        {                            num[j+k*10] = true;                            num[k+j*10] = true;                        }                    }                }            }            for(int i=0;i<10;i++)            {                for(int j=0;j<10;j++)                {                    for(int k=0;k<10;k++)                    {                        if(cube[0][i]&&cube[1][j]&&cube[2][k])                        {                            num[i+j*10+k*100] = true;                            num[i+k*10+j*100] = true;                            num[j+i*10+k*100] = true;                            num[j+k*10+i*100] = true;                            num[k+i*10+j*100] = true;                            num[k+j*10+i*100] = true;                        }                    }                }            }        }        int re;        for(re=1;re<1000;re++)        {            if(!num[re])            {                break;            }        }        printf("%d\n",re-1);    }    return 0;}


C. Solution for Cube

思路:转二元魔方问题,由于这题情况很清晰,直接强行开暴力,至于交题之前一定要检查一发,代码还没写完就慌忙交题,这个wa我无话可说

#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1e5+10;int cube[30];int col[6];int main(){    while(scanf("%d",&cube[1])!=EOF)    {        bool make = false;        col[0] = cube[1];        for(int i=2;i<=24;i++)        {            scanf("%d",&cube[i]);            if(i%4==1)            {                col[(i-1)/4] = cube[i];            }            else            {                if(cube[i] != col[(i-1)/4])                {                    col[(i-1)/4] = -1;                }            }        }        if(col[0]>0&&col[2]>0)        {            if(  cube[15]==cube[16]               &&cube[16]==cube[ 5]               &&cube[ 5]==cube[ 6]               &&cube[ 7]==cube[ 8]               &&cube[ 8]==cube[17]               &&cube[17]==cube[18]               &&cube[19]==cube[20]               &&cube[20]==cube[21]               &&cube[21]==cube[22]               &&cube[23]==cube[24]               &&cube[24]==cube[13]               &&cube[13]==cube[14])            {                make = true;            }            if(  cube[15]==cube[16]               &&cube[16]==cube[21]               &&cube[ 5]==cube[ 6]               &&cube[ 7]==cube[ 8]               &&cube[ 8]==cube[13]               &&cube[17]==cube[18]               &&cube[19]==cube[20]               &&cube[20]==cube[ 5]               &&cube[21]==cube[22]               &&cube[23]==cube[24]               &&cube[24]==cube[17]               &&cube[13]==cube[14])            {                make = true;            }        }        else if(col[1]>0&&col[5]>0)        {            if(  cube[ 3]==cube[ 4]               &&cube[ 4]==cube[18]               &&cube[18]==cube[20]               &&cube[17]==cube[19]               &&cube[19]==cube[11]               &&cube[11]==cube[12]               &&cube[ 9]==cube[10]               &&cube[10]==cube[13]               &&cube[13]==cube[15]               &&cube[14]==cube[16]               &&cube[16]==cube[ 1]               &&cube[ 1]==cube[ 2])            {                make = true;            }            if(  cube[ 3]==cube[ 4]               &&cube[ 4]==cube[15]               &&cube[18]==cube[20]               &&cube[17]==cube[19]               &&cube[19]==cube[ 1]               &&cube[11]==cube[12]               &&cube[ 9]==cube[10]               &&cube[10]==cube[18]               &&cube[13]==cube[15]               &&cube[14]==cube[16]               &&cube[16]==cube[11]               &&cube[ 1]==cube[ 2])            {                make = true;            }        }        else if(col[3]>0&&col[4]>0)        {            if(  cube[ 1]==cube[ 3]               &&cube[ 3]==cube[21]               &&cube[ 6]==cube[ 8]               &&cube[ 5]==cube[ 7]               &&cube[ 7]==cube[ 2]               &&cube[10]==cube[12]               &&cube[ 9]==cube[11]               &&cube[11]==cube[ 6]               &&cube[21]==cube[23]               &&cube[22]==cube[24]               &&cube[24]==cube[10]               &&cube[ 2]==cube[ 4])            {                make = true;            }            if(  cube[ 1]==cube[ 3]               &&cube[ 3]==cube[ 6]               &&cube[ 6]==cube[ 8]               &&cube[ 5]==cube[ 7]               &&cube[ 7]==cube[10]               &&cube[10]==cube[12]               &&cube[ 9]==cube[11]               &&cube[11]==cube[21]               &&cube[21]==cube[23]               &&cube[22]==cube[24]               &&cube[24]==cube[ 2]               &&cube[ 2]==cube[ 4])            {                make = true;            }        }        if(make)        {            printf("YES\n");        }        else        {            printf("NO\n");        }    }    return 0;}

暴力场,排名还算挺可观的,要是时间早一点,没提前睡觉,专心来个hack什么的肯定分数大涨了,等等看排名的变化吧

好吧,unrated,似乎是题目难度设置出了点问题,导致变成了纯手速场


文章地址:http://blog.csdn.net/owen_q/article/details/78443433