非官方题解
2025-04-08 18:27:25
发布于:北京
4阅读
0回复
0点赞
作者第一眼就觉得一定不是暴力。
有一个很明显的点,a[i]
不是 -1
就是 1
,要求加起来是 0,那么,这两种数的个数一定是一样的,总数是 2n
个,这里 n
指的是 -1
的个数(也可以是 1
的个数)。这个总数一定是个偶数。
所以,如果选中数字的数量是个奇数,那么一定是"sad"。
刚才说过,只有这两种数的个数足够使他们一样,才是"happy",否则就是"sad"。
这代码不就出来了?
Python Code:
n, m = map (int, input ().split ())
a = list (map (int, input ().split ()))
cnt_x = 0
cnt_y = 0
for i in range (n):
if a[i] == 1:
cnt_x += 1
else:
cnt_y += 1
#print (cnt_x, cnt_y, end = ' ')
for _ in range (m):
l, r = map (int, input ().split ())
if (r - l) % 2 == 0:
print ("sad")
continue
num = (r - l + 1) // 2
if cnt_x >= num and cnt_y >= num:
print ("happy")
else:
print ("sad")
代码中的注释是作者调试的时候用的,不影响整体代码。
这里空空如也
有帮助,赞一个