单车运营
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

题目背景

学校的路有一定坡度,而教学楼和饭堂处于地势较低的地方,这使得从学生宿舍骑共享单车到教学楼几乎不花费任何力气,反之则需要花费大量力气。于是同学们往往更愿意骑车到教学楼,走路回宿舍。因此,学校各个位置的共享单车总是倾向集中于某个地方, 运营师傅必须对共享单车进行搬运才能使同学们利用共享单车获得最大的方便。

题目描述

幸运的是,运营师傅可以利用GPS知道每一辆共享单车的位置。天气很热,他希望用最小的努力就可以满足所有位置的用车需求。现在定义运营师傅的努力为单车数量与搬运距离的乘积,并给定每个地点的现有车辆 ai ,和每个地点的需求车辆 bi,以及两地之间距离 disi,j ,求运营师傅完成任务所需花费的最小努力。

输入描述:

第一行有一个正整数 n ,表示给定的地点数量。
接下来有两行,每行有n个整数,分别表示各地的现有车辆ai和需求车辆bi
再接下来有 n 行,每行有 n 个正整数disi,j,表示从i地到j地的距离

输出描述:

输出一个整数,表示最小的努力。
示例1

输入

复制
5
12 20 32 16 14
16 16 36 10 16 
0 100 77 39 105
100 0 150 186 122
77 150 0 324 102
39 186 324 0 107
105 122 102 107 0

输出

复制
932
示例2

输入

复制
3
2 4 5
3 2 6
0 5 6
5 0 3
6 3 0

输出

复制
8

备注: