1. 程式人生 > >華東交通大學2017年ACM“雙基”程序設計競賽 1008

華東交通大學2017年ACM“雙基”程序設計競賽 1008

col pan 數據 problem 表示 proc leo turn mem

Problem Description

長度為 n 的序列,把它劃分成兩段非空的子序列,定義權值為:兩段子序列的最大值的差的絕對值。求可能的最大的權值。
數據範圍:
2 <= n <= 10^6 , 0 < 序列內的數 <= 10^6 。

Input

第一行輸入一個 T,表示有 T 組數據。
接下來有 T 組數據,每組數據的第一行輸入一個數 n ,第二行輸入 n 個數。

Output

每組數據輸出可能的最大的權值。

Sample Input

1
3
1 2 3

Sample Output

2

解法:暴...暴力

 1 #include<bits/stdc++.h>
 2
using namespace std; 3 int cnt[1234567]; 4 int Max_a[1234567]; 5 int Max_b[1234567]; 6 int Min=0; 7 int main(){ 8 int t,n; 9 scanf("%d", &t); 10 while(t--){ 11 Min=0; 12 memset(Max_a, 0, sizeof(Max_a)); 13 memset(Max_b, 0, sizeof(Max_b)); 14 scanf("
%d",&n); 15 for(int i = 1; i <= n; i++){ 16 scanf("%d", &cnt[i]); 17 Max_a[i] = max(Max_a[i - 1], cnt[i]); 18 } 19 for(int i = n; i > 0; i--){ 20 Max_b[i] = max(Max_b[i + 1], cnt[i]); 21 } 22 23 for(int
i = 1; i < n; i++){ 24 Min = max(Min, abs(Max_a[i] - Max_b[i + 1])); 25 } 26 printf("%d\n", Min); 27 } 28 return 0; 29 }

華東交通大學2017年ACM“雙基”程序設計競賽 1008