NYIST20级排位赛第一场 复盘

更好的阅读体验:http://www.abmcar.top/archives/nyist20-ji-pai-wei-sai-di-yi-chang-fu-pan

A - A CodeForces 1574C

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

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

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

C - C CodeForces - 1406B

取正数里的最大最小和负数里的最大最小直接暴力算即可
利用优先队列取二者的最大最小
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OPpndSl3-1633159026756)(/upload/2021/10/image-7271cf8e27b4475eb90afbee125b871b.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pr3ekcg9-1633159026758)(/upload/2021/10/image-0399bb5850654f2bace0d99fafa8e2e1.png)]
我期待的Q1234
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fnco6ofj-1633159026759)(/upload/2021/10/image-cc09726fc0964a58808ff39d62a7c278.png)]
实际的Q1234
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o9Xz96RV-1633159026761)(/upload/2021/10/image-cafef9ffe871480782ffd6f6fde23acb.png)]
正数中的最大和负数中的最小的顺序反了
需要额外
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fVXJHKSA-1633159026762)(/upload/2021/10/image-3b38507b6d36456899717caa78098d2d.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后回过头来看,发现上图代码滑雪能平地滑
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xOvT7t2U-1633159026763)(/upload/2021/10/U_XZ%7BX9JF4%25M9EY_FPUWWL4-191372583b4a429c95f980b309bf6b9b.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;
        }
    }

待更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abmcar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值