题目描述
有一个给定的 n 行 n 列的方阵 A。方阵 A 中的每个位置有一个非负整数,用 Ai,j 表示第 i 行第 j 列的数,1≤i,j≤n。
有两个给定的长为 n 的非负整数列,{ai} 和 {bi}。
现在你要构造一个同样 n×n 大小的新的方阵 B,满足:
- B 的元素 Bi,j(1≤i,j≤n) 都是非负整数。
- B 的每个元素不能超过 A 对应位置的元素。也就是对于任意 1≤i,j≤n,必须满足 0≤Bi,j≤Ai,j
- 对于每个 1≤i≤n,B 的前 i 行所有元素的和不超过 ai。
- 对于每个 1≤i≤n,B 的前 i 列所有元素的和不超过 bi。
问:方阵 B 中的所有元素的和最大可能是多少?
这个问题中,方阵 A 的非零元素个数只有不超过 m 个。具体而言,方阵 A 采用如下方式输入:初始情况下 A 的元素全部为 0,然后有 m 次操作,每次给定 ui,vi,ci,表示给 A 的第 ui 行 vi 列加上 ci。(不保证不同操作中 ui,vi 互不相等)
输入格式
为减少输入量,a,b,u 均由差分形式给出。
第一行两个数 n,m。
第二行 n 个数,其中第 i 个为 ai−ai−1,设 a0=0。(也就是说输入数组的前缀和才是真正的 a)
第三行 n 个数,其中第 i 个为 bi−bi−1,设 b0=0。(也就是说输入数组的前缀和才是真正的 b)
接下来 m 行,每行三个数,其中第 i 行为 ui−ui−1,vi,ci,设 u0=0。(也就是说输入的这些三元组中第一个元素要做前缀和才得到真正的 u)。ui,vi,ci 表示给 A 的第 ui 行 vi 列加上 ci。
保证这些差分都非负,也就是说 a,b,u 的输入顺序都是单调不降的。
输出格式
一行一个非负整数,表示方阵 B 中的所有元素最大可能的和。
样例
样例输入 1
2 3
2 2
2 2
1 1 2
0 2 2
1 1 2
样例输出 1
4
样例解释 1
还原后的输入为:
a=b={2,4}
A=[2220]
一个最优解是:
B=[0220]
样例输入 2
10 10
1 0 1 1 1 0 1 2 2 1
1 1 0 1 0 1 2 2 1 0
1 8 1
1 4 1
1 3 1
2 6 1
1 6 1
0 1 1
0 4 1
0 9 1
3 2 1
0 10 1
样例输出 2
6
样例解释 2
一个最优解是,B1,8=B5,6=B6,6=B6,9=B9,2=B9,10=1,其余位置为 0。
数据范围与提示
由于输入量较大,请使用快读。附加文件中附有快读模板。
对于所有数据,$1\le m,n\le 4\times 10^6, 1\le a_i,b_i\le 2\times 10^8, 1\le u_i,v_i\le n, 1\le c_i\le 100$。
对于前 20% 的数据,n=m=20,ci=1;
对于另外 20% 的数据,n=m=105,ui=vi=i;
对于另外 30% 的数据,n=m=105;
对于另外 10% 的数据,n=m=106;
对于另外 10% 的数据,n=m=2×106;