首页 > 试题广场 >

最大 FST 距离

[编程题]最大 FST 距离
  • 热度指数:4524 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
\hspace{15pt}给定 n 个元素,第 i 个元素具有特征值 A_i。定义FST 距离如下:

\mathrm{dist}(i,j)=\lvert i^2-j^2\rvert+\lvert A_i^2-A_j^2\rvert

\hspace{15pt}请计算 A_i 中所有元素对儿中的最大 FST 距离。

输入描述:
\hspace{15pt}第一行输入一个整数 n\left(1\leqq n\leqq 10^5\right)
\hspace{15pt}第二行输入 n 个整数 A_1,A_2,\dots,A_n\left(1\leqq A_i\leqq 10^9\right)


输出描述:
\hspace{15pt}输出一个整数,表示最大距离。
示例1

输入

2
4 3

输出

10

说明

|4^2-3^2|+|2^2-1^2| = 7+3 = 10

备注:

n = int(input())
A = list(map(int,input().split()))

dic_plus = {}
dic_minus = {}
for i in range(n):
    dic_plus[i+1] = A[i]**2+(i+1)**2
    dic_minus[i+1] = A[i]**2-(i+1)**2
sorted_dic_plus_keys = sorted(dic_plus.keys(),key=lambda x:dic_plus[x])
sorted_dic_minus_keys = sorted(dic_minus.keys(),key=lambda x:dic_minus[x])
answer = max(abs(sorted_dic_plus_keys[-1]**2-sorted_dic_plus_keys[0]**2)+abs(A[sorted_dic_plus_keys[-1]-1]**2-A[sorted_dic_plus_keys[0]-1]**2),abs(sorted_dic_minus_keys[-1]**2-sorted_dic_minus_keys[0]**2)+abs(A[sorted_dic_minus_keys[-1]-1]**2-A[sorted_dic_minus_keys[0]-1]**2))

print(answer)
发表于 2025-08-27 00:05:28 回复(0)