[牛客复盘] 牛客2022跨年场 20221212
- 一、本周周赛总结
- 二、 A 猜群名
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 三、B 分赃
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 四、C 翻卡牌
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 五、D ygg的分数运算
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 六、E 摇色子
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 七、F 回顾往昔
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 八、G 李哥跨年
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 九、H nana吃蛋糕
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 六、参考链接
一、本周周赛总结
- 第一次打牛客,在群友的帮助下ak了,娱乐极了。
- https://ac.nowcoder.com/acm/contest/49343
二、 A 猜群名
1. 题目描述
2. 思路分析
- 每个题面有一个加粗的字,拼成一句话,然后按顺序输出题号。
- 分别是 !AK百跨赛年五,拼成 跨年赛五百AK。
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()
六、参考链接
- 无