qq_41094461 2017-11-18 06:34 采纳率: 100%
浏览 835
已采纳

编程题目,哪位大神教我做,谢谢!

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

  • 写回答

3条回答 默认 最新

  • threenewbee 2017-11-18 10:11
    关注
     #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N = 1e6+10;
    int a[N], pre[N], sum[N];
    int main() {
        int T;
        cin>> T;
        while(T--) {
            int n;
            cin >> n;
            memset(sum, 0, sizeof(sum));
            memset(pre, 0, sizeof(pre));
            for(int i = 1; i <= n; i ++) cin >> a[i];
            for(int i = 1; i <= n; i ++) {
                sum[i] = max(sum[i-1], a[i]);
            }
            for(int i = n; i > 0; i --) {
                pre[i] = max(pre[i+1], a[i]);
            }
            int MAX = -1;
            for(int i = 2; i <= n; i ++){
                MAX = max(MAX, abs(pre[i]-sum[i-1]));
            }
            printf("%d\n",MAX);
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器