算法 【曼哈顿距离】BISHI25 最大 FST 距离 求解代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StreamTokenizer in = new StreamTokenizer(br); PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); in.nextToken(); int n = (int) in.nval; long[] a = new long[n]; for (int i = 0; i < n; i++) { in.nextToken(); a[i] = (long) in.nval; } long maxU = Long.MIN_VALUE; long minU = Long.MAX_VALUE; long maxV = Long.MIN_VALUE; long minV = Long.MAX_VALUE; for (long i = 0; i < n; i++) { // 计算当前位置的索引(从1开始,而非0) long idx = i + 1; long val = a[(int) i]; // 计算u值:位置索引的平方 + 数值的平方 long u = idx * idx + val * val; // 计算v值:位置索引的平方 - 数值的平方 long v = idx * idx - val * val; maxU = Math.max(maxU, u); minU = Math.min(minU, u); maxV = Math.max(maxV, v); minV = Math.min(minV, v); } long dist = Math.max(maxU - minU, maxV - minV); out.println(dist); out.flush(); out.close(); br.close(); }