AT_kupc2020_e.Sequence Partitioning

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定三个长度为 NN 的整数数列 A=(a0,…,aN−1)A=(a_0,\ldots,a_{N-1})、B=(b0,…,bN−1)B=(b_0,\ldots,b_{N-1})、C=(c0,…,cN−1)C=(c_0,\ldots,c_{N-1}),其中每个元素都在 −109-10^9 到 10910^9 之间。

现在,考虑将数列 AA 分割成若干个连续的子序列。一次分割可以用满足以下 33 个条件的整数序列 D=(d0,…,dr)D=(d_0,\ldots,d_r) 来表示:

  • d0=0d_0=0。
  • dr=Nd_r=N。
  • 对于 0≤i<r0\leq i<r,有 di<di+1d_i<d_{i+1}。

也就是说,每个 ii 对应的区间 [di,di+1)[d_i,d_{i+1}) 表示一个连续区间,整个数列被这 rr 个区间完全覆盖且不重叠。

对于一次分割 DD,定义其得分函数 ff 如下:

f(D)=min⁡0≤i<r{bdi+cdi+1−1+∑di≤j<di+1aj}f(D)=\min_{0\leq i<r}\left\{b_{d_i}+c_{d_{i+1}-1}+\sum_{d_i\leq j<d_{i+1}} a_j\right\}

请你选择一种分割方式,使得 ff 的值最大,并输出该最大值。

输入格式

输入通过标准输入给出,格式如下:

NN a0a_0 a1a_1 ⋯\cdots aN−1a_{N-1} b0b_0 b1b_1 ⋯\cdots bN−1b_{N-1} c0c_0 c1c_1 ⋯\cdots cN−1c_{N-1}

输出格式

请输出一行答案。

输入输出样例

  • 输入#1

    2
    1 -1
    -1 4
    1 -2

    输出#1

    1
  • 输入#2

    1
    1000000000
    1000000000
    1000000000

    输出#2

    3000000000
  • 输入#3

    11
    -323225375 -897098227 -795978453 501188072 409939326 -362890219 969123048 962633819 252457646 694824070 -406990840
    -696821643 -663750226 -570551722 670541392 172964990 399404695 -305728788 -157617655 -801518744 -328729631 -160335217
    -465411342 -660775657 515997870 -34787742 628368976 84800619 -728713779 573207953 115652694 -686953578 -215986240

    输出#3

    91174984

说明/提示

限制条件

  • 所有输入均为整数。
  • 1≤N≤2×1051\leq N\leq 2\times 10^5。
  • −109≤ai,bi,ci≤109 (0≤i<N)-10^9\leq a_i,b_i,c_i\leq 10^9\ (0\leq i<N)。

样例解释 1

当 D=(0,2)D=(0,2) 时,得分为 b0+c1+a0+a1=−3b_0+c_1+a_0+a_1=-3。当 D=(0,1,2)D=(0,1,2) 时,得分为 min⁡(b0+c0+a0,b1+c1+a1)=min⁡(1,1)=1\min(b_0+c_0+a_0,b_1+c_1+a_1)=\min(1,1)=1。

样例解释 2

请注意防止溢出。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页