Powered by:AB_IN 局外人
题目突破点是在于 k k k的值, n 2 ≤ k ≤ n \frac {n} {2} \le k \le n 2n≤k≤n.这告诉我们最多删一半。
那这个题就好做了,因为这个串只由 0 0 0和 1 1 1组成。
for _ in range(int(input())):
n=int(input())
lst=input().split()
one=lst.count("1")
zero=lst.count("0")
if one>zero:
lst=list(filter(lambda x: x=="1",lst))
if len(lst)&1:
lst.pop()
else:
lst=list(filter(lambda x: x=="0",lst))
print(len(lst))
print(" ".join(lst))
from math import gcd
当只用这个库的一个函数时比较方便。lst=[(1,2,3) , (3,1,2) ,(2,10000,2200)]
lst.sort()
print(max(lst))
print(max(lst,key=lambda x: x[1]))
print(min(lst))
print(*lst)
#(3, 1, 2)
#(2, 10000, 2200)
#(1, 2, 3)
#(1, 2, 3) (2, 10000, 2200) (3, 1, 2)
可以看出,默认元组之间的大小比较是根据元组的第一个元素决定的
如果需要更改则在后面加限制条件即可。
from math import gcd
for _ in range(int(input())):
n=int(input())
lst=list(map(int,input().split()))
maxn=max(lst)
ans=[]
while lst:
tmp = max((gcd(maxn,i),i) for i in lst)
lst.remove(tmp[1])
ans.append(tmp[1])
maxn = tmp[0]
print(*ans)
完结。