NYIST20级排位赛第一场 复盘

NYIST20级排位赛第一场 复盘

A - A CodeForces 1574C

大致分2种情况 分类讨论即可

  • 选最大的小于龙防御的勇士打龙,其他人守城
  • 选最小的大于龙防御的勇士大龙,其他人守城

因为sb的greater()和lower_bound(),upper_bound()贡献了5次wa

C - C CodeForces - 1406B

取正数里的最大最小和负数里的最大最小直接暴力算即可
利用优先队列取二者的最大最小
image.png
image.png
我期待的Q1234
image.png
实际的Q1234
image.png
正数中的最大和负数中的最小的顺序反了
需要额外
image.png

I - I POJ - 1088

经典老题,写过好多遍,dfs记忆化即可

好的接下来我们来查错

int work(int nowX, int nowY, int nowD)
{
    tot++;
    if (preAns[nowX][nowY] != 0)
        return nowD - 1 + preAns[nowX][nowY];
    int nowMax = nowD;
    for (int i = 0; i < 4; i++)
    {
        int nx = nowX + nextX[i];
        int ny = nowY + nextY[i];
        if (nx > n || ny > m || nx < 1 || ny < 1)
            continue;
        if (vis[nx][ny])
            continue;
        if (board[nx][ny] > board[nowX][nowY])
            continue;
        vis[nx][ny] = true;
        nowMax = max(nowMax, work(nx, ny, nowD + 1));
        vis[nx][ny] = false;
    }
    preAns[nowX][nowY] = max(preAns[nowX][nowY], nowMax - nowD + 1);
    return nowMax;
}

图中preAns为记忆的之后能走的最大长度
在经历了5发T,4发Wa后回过头来看,发现上图代码滑雪能平地滑
U_XZX9JF4M9EY_FPUWWL4.jpg

G - G AtCoder - abc177_e

已知质数gcd结果为1,可以先算出全部的gcd,非1则直接not coprime
接下来再判互质

不知道怎么想出来的互质:
一个数不是另一个数的因子

    for (ll i = 0; i < n; i++)
    {
        ll temp = N[i];
        ll nowNum = N[i] * 2;
        if (N[i] == 1)
            continue;
        while (nowNum <= 1e6)
        {
            if (M[nowNum] >= 1)
            {
                cout << "setwise coprime" << endl;
                return 0;
            }
            nowNum += temp;
        }
    }

实际的互质:
不能有共同的因子

    for (int i = 0; i < primes.size(); i++)
    {
        int nowCnt = 0;
        for (int j = 1; j*primes[i] <= 1e6; j++)
            nowCnt = nowCnt + M[j*primes[i]];
        if (nowCnt > 1)
        {
            cout << "setwise coprime" << endl;
            return 0;
        }
    }

待更新

Licensed under CC BY-NC-SA 4.0