HDU-2017 多校训练赛4-补题

ACM模版

这次多校训练赛好难啊,应该是目前最难的一场吧……因为刘老师在比赛后两小时左右就说,服务器压力不大,可以开放题库了……这不是在说,之后可能提交的人数会很少了……感觉老师在骗我们,明明说好的区分度呢?在两点时,榜单第 137A 137 A 了两道,可怕的是 660 660 同样是 A A 了两道,这区分度……成功的将队伍的阅读速度和手速区分开了啊……好在,这场算是 A A 了三道,水进了前 200 200 ,感觉自己好渣啊~~~

1003-Counting Divisors

>>>合数分解<<< 暴力枚举,素数筛,合数分解……

1009-Questionnaire

描述

HDU-2017 多校训练赛4-补题_第1张图片

题解

签到题,固定 m=2 m = 2 ,然后判断 k k 0 0 还是 1 1 就行了。

代码

#include 

using namespace std;

int n;

int main()
{
    int t;
    scanf("%d", &t);
    while (t--)
    {
        scanf("%d", &n);
        int cnt1 = 0, cnt0 = 0, num;
        for (int i = 1; i <= n; i++)
        {
            scanf("%d", &num);
            if (num & 1)
            {
                cnt1++;
            }
            else
            {
                cnt0++;
            }
        }

        if (cnt1 > cnt0)
        {
            printf("2 1\n");
        }
        else
        {
            printf("2 0\n");
        }
    }

    return 0;
}

1011-Time To Get Up

描述

HDU-2017 多校训练赛4-补题_第2张图片

题解

思路很简单,只要判定一下就好了,没什么难度,就是写起来代码好长啊,费事儿……拼的就是手速吧!话说,这个题还 CE C E 了一发,原因貌似是因为注释……

代码

#include 
#include 
#include 

using namespace std;

const int MAXN = 8;
const int MAXM = 22;

char map[MAXN][MAXM];
char tmp[MAXN][MAXN];

int check()
{
    if (tmp[4][2] == 'X')
    {
        if (tmp[3][1] == '.' && tmp[5][1] == 'X' && tmp[3][4] == 'X' && tmp[5][4] == '.')
        {
            return 2;
        }
        else if (tmp[3][1] == '.' && tmp[5][1] == '.' && tmp[3][4] == 'X' && tmp[5][4] == 'X')
        {
            return 3;
        }
        else if (tmp[3][1] == 'X' && tmp[5][1] == '.' && tmp[3][4] == 'X' && tmp[5][4] == 'X' && tmp[1][3] == '.')
        {
            return 4;
        }
        else if (tmp[3][1] == 'X' && tmp[5][1] == '.' && tmp[3][4] == '.' && tmp[5][4] == 'X')
        {
            return 5;
        }
        else if (tmp[3][1] == 'X' && tmp[5][1] == 'X' && tmp[3][4] == '.' && tmp[5][4] == 'X')
        {
            return 6;
        }
        else if (tmp[3][1] == 'X' && tmp[5][1] == 'X' && tmp[3][4] == 'X' && tmp[5][4] == 'X')
        {
            return 8;
        }
        else
        {
            return 9;
        }
    }
    else
    {
        if (tmp[3][1] == 'X' && tmp[5][1] == 'X' && tmp[3][4] == 'X' && tmp[5][4] == 'X')
        {
            return 0;
        }
        if (tmp[3][1] == '.' && tmp[5][1] == '.' && tmp[3][4] == 'X' && tmp[5][4] == 'X' && tmp[1][3] == '.')
        {
            return 1;
        }
        else
        {
            return 7;
        }
    }

    return -1;
}

int main(int argc, const char * argv[])
{
    int T;
    cin >> T;
    while (T--)
    {
        for (int i = 1; i < MAXN; i++)
        {
            scanf("%s", map[i] + 1);
        }

        for (int i = 1; i < MAXN; i++)
        {
            for (int j = 1; j < 5; j++)
            {
                tmp[i][j] = map[i][j];
            }
        }
        int A = check();

        for (int i = 1; i < MAXN; i++)
        {
            for (int j = 6, k = 1; j < 10; j++, k++)
            {
                tmp[i][k] = map[i][j];
            }
        }
        int B = check();

        for (int i = 1; i < MAXN; i++)
        {
            for (int j = 13, k = 1; j < 17; j++, k++)
            {
                tmp[i][k] = map[i][j];
            }
        }
        int C = check();

        for (int i = 1; i < MAXN; i++)
        {
            for (int j = 18, k = 1; j < 22; j++, k++)
            {
                tmp[i][k] = map[i][j];
            }
        }
        int D = check();

        printf("%d%d:%d%d\n", A, B, C, D);
    }

    return 0;
}

吐槽

这次的题,差不多会做的都会做,不会做的都没几个人做,只有第一页有区分度……后边的都是拼的手速和英语阅读水平……第三题挺好的,感觉自己很蠢,一开始就想到了对于 i i 求因子的公式,但是加上了 k k 次方后我就竟然不知道在公式上稍微一改动就行了……导致自己儍瞪眼了半天,(  ̄  ̄)σ…( _ _)ノ|补题放在明天再补吧,我还要赶着去警察局立案呢!

1004-Dirt Ratio

>>>二分+线段树<<< 二分答案,线段树维护区间最小。

1012-Wavel Sequence

>>>dp<<< 优化手段十分强势,智商不够用了。自己很难想起来这种手段。

1007-Matching In Multiplication

>>>二分图<<< 图论好题,拓扑删点。巧妙~~~

你可能感兴趣的:(CONTESTS)