A27804.投硬币

普及/提高-

通过率:0%

时间限制:2.00s

内存限制:256MB

题目描述

时间限制:2000ms
内存限制:256MB

小码君接下来会投掷硬币 NN 次。他还有一个计数器,初始值为 0。

根据第 ii 次掷硬币的结果:

  • 如果是正面:将计数器的值增加 11,并获得 XiX_i 元。
  • 如果是反面:将计数器的值重置为 00,并且不会得到钱。

另外,还有 MM 种额外奖金。
ii 种奖金会在计数器的值为 CiC_i 时,每次奖励 YiY_i 元。

求小码君能获得的最大金额。

数据范围\large{数据范围}

  • 1MN50001\leq M\leq N\leq 5000
  • 1Xi1091\leq X_i\leq 10^9
  • 1CiN1\leq C_i\leq N
  • 1Yi1091\leq Y_i\leq 10^9
  • C1,C2,,CMC_1,C_2,\ldots,C_M 互不相等。
  • 所有输入数值均为整数。

输入格式

对于每个测试文件格式如下:

N M\tt{N\ M}
X1 X2  XN\tt{X_1\ X_2\ \ldots\ X_N}
C1 Y1\tt{C_1\ Y_1}
C2 Y2\tt{C_2\ Y_2}
\tt{\vdots}
CM YM\tt{C_M\ Y_M}

输出格式

对于每个测试文件输出小码君能够获得的最大金额。

输入输出样例

  • 输入#1

    6 3
    2 7 1 8 2 8
    2 10
    3 1
    5 5

    输出#1

    48
  • 输入#2

    3 2
    1000000000 1000000000 1000000000
    1 1000000000
    3 1000000000

    输出#2

    5000000000

说明/提示

样例 11
若投硬币的结果依次为正,正,反,正,正,正:

  • 在第 11 次掷硬币中,为正面。将计数器的值从 00 改为 11 ,获得 22 元。
  • 在第 22 次抛硬币中,为正面。将计数器的值从 11 改为 22 ,得到 77 元。此外,还可以获得 1010 元的奖金。
  • 在第 33 次抛硬币中,为反面。将计数器的数值从 22 改为 00
  • 在第 44 次抛硬币中,为正面。将计数器的值从 00 改为 11 ,得到 88 元。
  • 在第 55 次抛硬币中,为正面。将计数器的值从 11 改为 22 ,得到 22 元。此外,还能获得 1010 元的额外奖金。
  • 66 次抛硬币中,为正面。将计数器的值从 22 改为 33 ,即可获得 88 元。此外,还能获得 11 元的额外奖励。

在这种情况下,总共获得可以获得 2+(7+10)+0+8+(2+10)+(8+1)=482+(7+10)+0+8+(2+10)+(8+1)=48 元,这是可能获得的最高数额。
请注意,每次计数器显示 CiC_i 时,都可以获得 YiY_i 元奖金。
顺便提一下,如果他在所有掷硬币的 66 中都得到了正面,那么他只能得到 2+(7+10)+(1+1)+8+(2+5)+8=442+(7+10)+(1+1)+8+(2+5)+8=44 元。

样例 22
请注意,答案可能会超出 3232 位整数类型。

首页