原题链接:蓝桥杯2019年第十届省赛真题-灵能传输
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
//import java.util.Scanner;
public class Main {
private static long[] a;
private static long[] s;
private static boolean[] st;
private static int n;
public static void main(String[] args) throws NumberFormatException, IOException {
int T;
//Scanner sc = new Scanner(System.in);
BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
//T = sc.nextInt();
T = Integer.parseInt(sc.readLine().trim());
while(T-- > 0) {
//n = sc.nextInt();
n = Integer.parseInt(sc.readLine().trim());
String[] arr = sc.readLine().trim().split(" ");
a = new long[n + 1];
s = new long[n + 1];
st = new boolean[n + 1];
s[0] = 0;
for(int i = 1; i <= n; i++) {
//s[i] = sc.nextLong();
s[i] = Integer.parseInt(arr[i - 1]);
s[i] += s[i - 1];
}
long s0 = s[0], sn = s[n];
if(s0 > sn) {
long temp = s0;
s0 = sn;
sn = temp;
}
Arrays.sort(s);
for(int i = 0; i <= n; i++) {
if(s[i] == s0) {
s0 = i;
break;
}
}
for (int i = n; i >= 0; i--) {
if(s[i] == sn) {
sn = i;
break;
}
}
int l = 0, r = n;
for(int i = (int)s0; i >= 0; i -= 2) {
a[l++] = s[i];
st[i] = true;
}
for(int i = (int)sn; i <= n; i += 2) {
a[r--] = s[i];
st[i] = true;
}
for(int i = 0; i <= n; i++) {
if(!st[i]) {
a[l++] = s[i];
}
}
long res = 0;
for(int i = 1; i <= n; i++) {
if(Math.abs(a[i] - a[i - 1]) > res) {
res = Math.abs(a[i] - a[i - 1]);
}
}
System.out.println(res);
}
}
}
8.9 分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复