[牛客复盘] 牛客2022跨年场 20221212

  • Post author:
  • Post category:其他




一、本周周赛总结

  • 第一次打牛客,在群友的帮助下ak了,娱乐极了。
  • https://ac.nowcoder.com/acm/contest/49343
    在这里插入图片描述

在这里插入图片描述



二、 A 猜群名



1. 题目描述



2. 思路分析

  • 每个题面有一个加粗的字,拼成一句话,然后按顺序输出题号。
  • 分别是
题号
A !
B A
C K
D
E
F
G
H
  • 注意A题加粗的是叹号。
  • 组合成一句通顺的话: 跨年五百AK赛!
  • 题号分别是:EGHDBCFA



3. 代码实现

print('EGHDBCFA')



三、B 分赃



1. 题目描述

在这里插入图片描述



2. 思路分析

明明会,但wa了3次蚌埠住了。

  • 计数每个数字,然后对次数再计数记为c。
  • 分成三种频次 1次的,2次的,3次及以上的
  • 2次的显然对答案没有意义,因为一定可以各一个使相同。
  • 3次即以上的,可以对答案没有意义,一边0一边x个;或有意义,给一边1个,另一边一定x-1>=2
  • 1次的,如果是偶数就可以分;如果是奇数,从3次及以上的分一个出来即可。



3. 代码实现

# Problem: 分赃
# Contest: NowCoder
# URL: https://ac.nowcoder.com/acm/contest/49343/B
# Memory Limit: 524288 MB
# Time Limit: 2000 ms
#
# Powered by CP Editor (https://cpeditor.org)

import sys
import bisect
import random
import io, os
from bisect import *
from collections import *
from contextlib import redirect_stdout
from itertools import *
from math import sqrt, gcd, inf
from array import *
from functools import lru_cache
from types import GeneratorType
from heapq import *

RI = lambda: map(int, sys.stdin.buffer.readline().split())
RS = lambda: map(bytes.decode, sys.stdin.buffer.readline().strip().split())
RILST = lambda: list(RI())
DEBUG = lambda *x: sys.stderr.write(f'{str(x)}\n')

MOD = 10**9 + 7

def solve():
    n, = RI()
    a = RILST()

    c = Counter(a)
    c = Counter(c.values())
    if c[1] & 1 == 0:
        return print('YES')
    del c[1]
    del c[2]
    if c:
        return print('YES')
    print('NO')

if __name__ == '__main__':
    solve()



四、C 翻卡牌



1. 题目描述

在这里插入图片描述



2. 思路分析

  • 不会做期望题,猜了个0
  • 结果对了!



3. 代码实现

print(0)



五、D ygg的分数运算



1. 题目描述

在这里插入图片描述



2. 思路分析

  • 如果a==b,c中只能含有a作为因子,除尽判断是否是1即可
  • a!=b,c中只能含有a、b,分别除尽。



3. 代码实现

# Problem: ygg的分数运算
# Contest: NowCoder
# URL: https://ac.nowcoder.com/acm/contest/49343/D
# Memory Limit: 524288 MB
# Time Limit: 2000 ms
#
# Powered by CP Editor (https://cpeditor.org)

import sys
import bisect
import random
import io, os
from bisect import *
from collections import *
from contextlib import redirect_stdout
from itertools import *
from math import sqrt, gcd, inf
from array import *
from functools import lru_cache
from types import GeneratorType
from heapq import *

RI = lambda: map(int, sys.stdin.buffer.readline().split())
RS = lambda: map(bytes.decode, sys.stdin.buffer.readline().strip().split())
RILST = lambda: list(RI())
DEBUG = lambda *x: sys.stderr.write(f'{str(x)}\n')

MOD = 10 ** 9 + 7


def solve():
    a, b, c = RI()
    if a == b:
        while c % a == 0:
            c //= a
        if c == 1:
            return print('YES')
        return print('NO')

    p = c
    x = y = 0
    while p % a == 0:
        p //= a
        x += 1
    while p % b == 0:
        p //= b
        y += 1
    if p == 1:
        return print('YES')
    print('NO')


if __name__ == '__main__':
    solve()



六、E 摇色子



1. 题目描述

在这里插入图片描述



2. 思路分析

  • 不会!



3. 代码实现

a = '114514'


def solve():
    x, = RI()
    print(f'3 {a[x - 1]}')


if __name__ == '__main__':
    solve()



七、F 回顾往昔



1. 题目描述

去翻b站。



2. 思路分析

  • 翻。



3. 代码实现

print("""【2021跨年赛讲题】兰子哥哥一万粉女装
2022-01-01 00:20:50
BV1ga411z7PM
""")



八、G 李哥跨年



1. 题目描述

翻日历。



2. 思路分析

  • 翻。



3. 代码实现

print(6)



九、H nana吃蛋糕



1. 题目描述

在这里插入图片描述



2. 思路分析

  • 这是倒正经题,实际是存在贪心策略的。
  • 发现就是一笔画,必须从1练到n。
  • 当n奇数时,发现全部点都可以走完,直接返回求和s。
  • 当n为偶数时,发现可以走n^2-1个点,即找一个最小的点不走即可。

    • 但这里要注意,模拟了一下,发现i+j是偶数的点必须走,因此只能找i+j奇数的点求最小值。



3. 代码实现

# Problem: nana吃蛋糕
# Contest: NowCoder
# URL: https://ac.nowcoder.com/acm/contest/49343/H
# Memory Limit: 524288 MB
# Time Limit: 2000 ms
#
# Powered by CP Editor (https://cpeditor.org)

import sys
import bisect
import random
import io, os
from bisect import *
from collections import *
from contextlib import redirect_stdout
from itertools import *
from math import sqrt, gcd, inf
from array import *
from functools import lru_cache
from types import GeneratorType
from heapq import *

RI = lambda: map(int, sys.stdin.buffer.readline().split())
RS = lambda: map(bytes.decode, sys.stdin.buffer.readline().strip().split())
RILST = lambda: list(RI())
DEBUG = lambda *x: sys.stderr.write(f'{str(x)}\n')

MOD = 10 ** 9 + 7


def solve():
    n, = RI()
    g = []
    s = 0
    for _ in range(n):
        g.append(RILST())
        s += sum(g[-1])
    if n & 1:
        return print(s)

    mn = inf
    for i in range(n):
        for j in range(n):
            if (i + j) & 1:
                mn = min(mn, g[i][j])
    print(s - mn)


if __name__ == '__main__':
    solve()



六、参考链接



版权声明:本文为liuliangcan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。