a,b=map(int,input().split())
def sgn(b):
if b>0:
return 1
else:
return -1
print(sgn(b)*abs(a))
n,m=map(int,input().split())
num1=list(map(int,input().split()))
num2=list(map(int,input().split()))
num1=num1[::-1]
num2=num2[::-1]
# print(num1)
# print(num2)
if n>m:
lenss =n
lens=n-m
for i in range(lens):
num2.append(0)
elif n<m:
lenss=m
lens =m-n
for i in range(lens):
num1.append(0)
else:
lenss=n
# print(num1)
# print(num2)
num3=[0]*(lenss+1)
for i in range(lenss):
num3[i]+=num1[i]+num2[i]
cnt=i+2
#print(cnt)
# print(num3[i],cnt)
if num3[i]>=cnt:
ncnt=num3[i]//cnt
num3[i]=num3[i]%(cnt)
num3[i+1]+=ncnt
if num3[-1]==0:
num4=num3[:len(num3)-1]
print(*num4[::-1])
else:
print(*num3[::-1])
解析:贪心题,先从小到大排序,然后利用枚举从右(i=0)开始变化,从左(j=0)开始变化,每一步的变化操作都做完后取极值,然后再与之前的比较,得出最小的极值。
读者可能会不明白为什么从右来一遍,还要从左再来一遍,因为从右开始时,j的取值为x,也就是m
n,m=map(int,input().split())
a=list(map(int,input().split()))
a.sort()
if m>=n:
print(0)
elif m==0:
print(a[-1]-a[0])
else:
i=0#左端变化次数
nummin = float('inf')
while True:#左端从0开始
j=m-2*i#右端在减去左端变化过来的最大数后剩余的变化次数
if j<0:#为负数说明右端最大值无法减小,即右端无法向左移动
j=0
num=a[n-j-1]-a[i]#m次操作结束,求出该次操作所得到的极值
#print(num,i)
nummin=min(nummin,num)#与之前的比较
if j<=0:
break
i+=1
j=0#右端变化次数
while True:#右端从0开始
i=m-2*j
if i<0:
i=0
num=a[n-j-1]-a[i]
#print(num,i)
nummin=min(nummin,num)
if i<=0:
break
j+=1
print(nummin)
解析:数学题,找规律,像分段函数,然后利用等差数列求和求解就行了。
n=int(input())
def Sn(n):
return (2*n-1)*n
def an(n):
return 4*n-3
for i in range(n):
k=int(input())
n1=(1 + (1 + 8 * k) ** 0.5) / 4
n2 = int((1 + (1 + 8 * k) ** 0.5) / 4)#第n段
if n1-n2==0:
print(0)
else:
ak=k-Sn(n2)#第n段的第ak个
n3=an(n2+1)#第n段有n3个
if ak<=(n3+3)//4:
print(ak-1)
elif ak<=n3-(n3+3)//4:
print(n2-(ak-1-(n3+3)//4)-1)
else:
print((ak-1-n3+(n3+3)//4-1)-n2+1)
# print()
# print(n2)
# print(n3)
# print(ak)
PC:干!用python写超时了。
解析:
n,m=map(int,input().split())
A=[]
for i in range(n):
list1=list(map(int,input().split()))
A.append(list1)
r,c=map(int,input().split())
B=[]
for i in range(r):
list1=list(map(int,input().split()))
B.append(list1)
q=int(input())
for i in range(q):
x1,y1,x2,y2=map(int,input().split())
ans=0
for i in range(x1-1,x2):
for j in range(y1-1,y2):
if B[(i-x1+1)%r][(j-y1+1)%c]!=1:
#print(A[i][j])
ans+=A[i][j]%998244353
print(ans%998244353)