B 题智乃的瓷砖
考点:暴力
思路:判断 i, j 的奇偶性即可。
import sys
import math
input = sys.stdin.readline
n, m = map(int, input().split())
a = [['' for _ in range(m)] for _ in range(n)]
for i in range(n):
for j in range(m):
if i % 2 == 0:
if j % 2 == 0:
a[i][j] = '/'
else:
a[i][j] = '\\'
else:
if j % 2 == 0:
a[i][j] = '\\'
else:
a[i][j] = '/'
for i in range(n):
for j in range(m):
print(a[i][j], end='')
print()
D 题智乃的果子
考点:优先队列,贪心
思路:读题可想到肯定是从小往大合并会比较优。我们先用优先队列记录一下果子的重量和数量,每次都取最轻的处理,把其中的一半两两合并;如果这一组只有一个果子,我们就再取一组与它合并。
sys
collections deque
= sys.stdin.readline
mod = ** +
n = (())
mp = {}
total =
_ (n):
c, w = (, ().split())
mp[w] = mp.get(w, ) + c
total += c
a = deque((mp.items()))
b = deque()
():
a a[][] == :
a.popleft()
b b[][] == :
b.popleft()
():
clean()
b (a a[][] <= b[][]):
w, c = a[]
c == :
a.popleft()
:
a[] = (w, c - )
w
:
w, c = b[]
c == :
b.popleft()
:
b[] = (w, c - )
w
():
clean()
b (a a[][] < b[][]):
w = a[][]
:
w = b[][]
c =
a a[][] == w:
c += a[][]
a.popleft()
b b[][] == w:
c += b[][]
b.popleft()
w, c
():
c <= :
b b[-][] == w:
b[-] = (w, b[-][] + c)
:
b.append((w, c))
ans =
total > :
w, c = pop_all()
k = c //
k:
ans = (ans + (k % mod) * (( * w) % mod)) % mod
total -= k
push( * w, k)
c & :
x = pop()
s = w + x
ans = (ans + s) % mod
total -=
push(s, )
(ans % mod)


