A.
import math
import os
import collections
import sys
T = int(input())
for _ in range(T):
n=int(input())
ux=0
dx=0
uy=0
dy=0
for i in range(n):
x,y=map(int,input().split())
ux=max(ux,x)
uy=max(uy,y)
dx=min(dx,x)
dy=min(dy,y)
ans=(ux-dx)+(uy-dy)
ans*=2
print(ans)
B
import math
import os
import collections
import sys
T = int(input())
for _ in range(T):
n=int(input())
a=list(map(int,input().split()))
f=0
pre=[-1]*n
suf=[-1]*n
for i in range(1,n):
pre[i]=max(pre[i-1],a[i-1])
for i in range(n-2,-1,-1):
suf[i]=max(suf[i+1],a[i+1])
'''for i in range(1,n-1):
print(str(i)+" "+str(pre[i])+" "+str(suf[i]))'''
for i in range(1,n-1):
if a[i]<pre[i] and a[i]<suf[i]:
f=1
break
if f==1:
print("NO")
else:
print("YES")
C
这个主要是在[x,2x]之间一定存在一个平方数
比如 0,1,2,3,4,5,6,7,8,9,10
找0-5的一个排列
首先5-10中一定有一个平方数,选择9;5+4=9,4+5=9,因此4,5都被用完了,然后可用的数就是0-3
再来看>=3的平方数是4,3+1=4,2+2=4,1+3=4;因此,1-3被用完了;
然后剩一个0,0+0也是平方数
python的ceil之前没用过
import math
import os
import collections
import sys
T = int(input())
for _ in range(T):
n=int(input())
res=[0]*n
l,r=n-1,n-1
while l>=0:
t= math.ceil(r ** .5) ** 2
l=t-r
for i in range(l,r+1):
res[i]=t-i
l-=1
r=l
print(*res)