QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 512 MB مجموع النقاط: 110

#13419. Sjeckanje

الإحصائيات

Paula 喜欢做小炒。为了让菜肴尽可能美味,她需要将一个长度为 $n$ 的整数序列切分成若干段,使得这些段的总价值最大。

每一段的价值定义为该段内最大值与最小值的差。切分后序列的总价值为所有段的价值之和。

例如,如果我们把序列 $[1\ 4\ 1\ 5\ 3\ 6]$ 切分成 $[1\ 4\ 1]$ 和 $[5\ 3\ 6]$ 两段,则总价值为 $(4 - 1) + (6 - 3) = 6$。

接下来会有 $q$ 次修改,每次修改的形式为“将区间 $[l, r]$(即下标为 $l, l + 1, \dots, r$ 的元素)内的每个元素都加上 $x$”。在每次修改后,回答询问:“切分序列所能得到的最大可能总价值是多少?”。

输入格式

第一行包含两个整数 $n$ 和 $q$($1 \le n, q \le 200\,000$),分别表示序列的长度和修改的次数。

第二行包含 $n$ 个整数 $a_i$($-10^8 \le a_i \le 10^8$),表示 Paula 需要切分的初始序列。

接下来的 $q$ 行,每行包含三个整数 $l, r$($1 \le l \le r \le n$)和 $x$($-10^8 \le x \le 10^8$),描述一次修改操作。

输出格式

输出 $q$ 行,每行一个整数,表示每次修改后序列的最大可能总价值。

子任务

子任务 分值 限制
1 15 $1 \le n, q \le 200$
2 40 $1 \le n, q \le 3000$
3 55 无附加限制。

样例

输入样例 1

4 3
1 2 3 4
1 2 1
1 1 2
2 3 1

输出样例 1

2
2
0

输入样例 2

4 3
2 0 2 1
4 4 1
2 2 3
1 3 2

输出样例 2

2
1
3

说明

样例 1 说明:

每次修改后,一种可能的最佳划分方案分别为:$[2\ 3\ 3\ 4]$;$[4\ 3]$ 和 $[3\ 4]$;以及 $[4\ 4\ 4\ 4]$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.