牛牛的RPG游戏
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

牛牛最近在玩一款叫做“地牢迷宫”的游戏,该游戏中的每一层都可以看成是一个n*m的二维棋盘,牛牛从左上角起始的(1,1)点移动到右下角的(n,m)点。

游戏中的每一个格子都会触发一些事件,这些事件将会影响玩家的得分。

具体来说,每到一个格子玩家触发事件时,首先会立即获得一个收益得分val(i,j)。注意这个得分不一定是正的,当它的值为负时将会扣除玩家一定的分数。

同时这个事件还会对玩家造成持续的影响,直到玩家下一次触发其他事件为止,每走一步,玩家都会获得上一个事件触发点buff(i,j)的得分。

在游戏开始时牛牛身上还没有任何的buff,所以在牛牛还未触发任何事件之前每走一步都不会产生任何影响。

牛牛使用“潜行者”这个职业,所以他路过地牢中的格子时,可以选择不去触发这些事件。

同时牛牛是一个速通玩家,想要快速的到达终点,所以他每次只会选择往右走或者往下走。

牛牛想要知道,他玩游戏可以获得的最大得分是多少,你能告诉他么。

输入描述:

第一行输入两个正整数n,m

接下来输入n行,每行输入m个整数表示该事件出发点被触发后,直到下一次触发事件,每移动一步改变的得分。

接下来输入n行,每行输入m个整数表示该事件出发点被触发后,分数的该变量。

输入保证,对于起点和终点,

输出描述:

输出仅一行一个非负整数,表示牛牛从左上角走到右下角的最多得分。
示例1

输入

复制
3 3
0 1 -80
1 -1000 0
-100 0 0
0 -5 100
2 100 0
100 -1 0

输出

复制
20

说明

一开始在(1,1)点,得分0,身上没有事件影响{buff}

接下来移动到(1,2)点,不触发事件,得分0,身上没有事件影响{buff}

接下来移动到(1,3)点,触发事件,得分100,身上有buff影响,每走一步减少80点得分。

接下来移动到(2,3)点,移动时扣除80得分,身上还有20点得分,然后触发事件,得分+0,同时{buff}被替换为每走一步+0。

接下来移动到(3,3)点,结束游戏,总得分20。

备注:

对于前10%的测试数据,保证
对于前20%的测试数据,保证
对于另20%的测试数据,保证
对于另20%的测试数据,保证
对于另10%的测试数据,保证输入的
对于100%的测试数据,保证对于起点和终点,