J
共个武器, 每个武器都能升m级, 给出一个n*m的矩阵c, 第i行第j列代表i武器从j-1升到j级的花费(可能为负), 又给出一个长度为m的数组, 第i个数代表如果每个武器都升到i级(或以上), 就能获得这个奖励(可能为负), 问最多能得到多少钱.
可以发现, 如果升不到j-1级就到不了j级, 换句话说, 升到j级肯定取了前面所有的花费, 奖励的数组也是同理, 所以, 这个矩阵和数组都可以先求前缀和, 得到升到当前级的总花费(奖励).
枚举第等级为最低等级, 就是说每个武器等级都必须>=这个等级. 那么就暂时不需要考虑奖励的问题, 每个武器i就可以贪
到
中的最小值作为花费, 然后求和加上奖励就好了. 但是这样又会出现一个问题: 所有的武器都贪到超高的等级去了, 最低等级就发生了变化, 奖励就不是由我们枚举的
唯一确定了. 解决这个问题也是很简单的, 只需要枚举每个武器, 选一个倒霉蛋调回最低等级, 然后加上花费的差值即可. 下(xjb)证这样做是合理的: 他们不选最低等级(