1. 根据FST的定义,知其等价于求“曼哈顿距离最值”。
  2. 套用公式:
  1. 一次遍历求出maxP、minP、maxQ、minQ,最后求最值即可。具体代码如下:
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] data = new int[n];
        for (int i = 0; i < n; i++) {
            data[i] = in.nextInt();
        }
        System.out.println(maxFst(data));
    }

    public static long maxFst(int[] data) {
        // dist(𝑖,𝑗)=∣𝑖^2−𝑗^2∣+∣𝐴𝑖^2−𝐴𝑗^2∣
        // P = i^2 + Ai^2    Q = i^2 - Ai^2
        // Ret = max (
        //  max(P) - min(P),
        //  max(Q) - min(Q) )
        long maxP = Long.MIN_VALUE;
        long minP = Long.MAX_VALUE;
        long maxQ = Long.MIN_VALUE;
        long minQ = Long.MAX_VALUE;
        long p, q;
        for (int i = 1; i <= data.length; i++) {
            p = (long) i * i + (long) data[i - 1] * data[i - 1];
            q = (long) i * i - (long) data[i - 1] * data[i - 1];
            maxP = Math.max(maxP, p);
            minP = Math.min(minP, p);
            maxQ = Math.max(maxQ, q);
            minQ = Math.min(minQ, q);
        }
        return Math.max(maxP - minP, maxQ - minQ);
    }
}