京东算法笔试 9.11
1. 序列重排
# 序列重排
import sys
from collections import deque
def get_result(arr):
arr = sorted(arr)
q = deque([arr[0]])
l, r = 1, len(arr) - 1
res = 0
while l <= r:
t = [abs(q[0] - arr[l]), abs(q[0] - arr[r]), abs(q[-1] - arr[l]), abs(q[-1] - arr[r])]
for i in range(len(t)):
if max(t) == t[i]:
res += t[i]
if i == 0:
q.appendleft(arr[l])
l += 1
elif i == 1:
q.appendleft(arr[r])
r -= 1
elif i == 2:
q.append(arr[l])
l += 1
else:
q.append(arr[r])
r -= 1
break
print(res)
if __name__=='__main__':
n = int(sys.stdin.readline().strip(' ').strip('\n').strip(' '))
arr = list(map(int, sys.stdin.readline().strip(' ').strip('\n').strip(' ').split(' ')))
get_result(arr)
# get_result([ 2,2,2,1, 5])
2. 依赖 # 依赖
import sys
from collections import deque
def get_result(n,edges,qs):
tree1,tree2 = {},{} # 开 # 关
for i in range(len(edges)):
tree1[i+1] = edges[i][1:]
for to in edges[i][1:]:
if to not in tree2:
tree2[to] =[]
tree2[to].append(i+1)
res = [0]
book = [0 for _ in range(n+10)]
def change1(root): # 开
if book[root]==1:
return
res[0] +=1
book[root]=1
for to in tree1.get(root,[]):
change1(to)
def change2(root):
if book[root]==0:
return
res[0]-=1
book[root] =0
for to in tree2.get(root,[]):
change2(to)
for i in range(len(qs)):
if qs[i][0]==1:
change1(qs[i][1])
else:
change2(qs[i][1])
print(res[0])
if __name__=='__main__':
n,q = list(map(int, sys.stdin.readline().strip(' ').strip('\n').strip(' ').split(' ')))
edges = []
for _ in range(n):
edges.append(list(map(int, sys.stdin.readline().strip(' ').strip('\n').strip(' ').split(' '))))
qs = []
for _ in range(q):
qs.append(list(map(int, sys.stdin.readline().strip(' ').strip('\n').strip(' ').split(' '))))
get_result(n,edges,qs)
# get_result([ 2,2,2,1, 5])

