P5132 Cozy Glow之拯救小马国
题目描述
Cozy Glow偷偷摸摸的造了一个魔法阵,这个魔法阵在吸取小马国的魔力,所以你得赶紧把它毁掉。
这个魔法阵由若干个神器组成,每个神器都有一个法力值,每两个神器之间也都有一个关联值。你要依次把这些神器拿走,但是,每拿走一个神器,你就会受到一定量的反噬,反噬的量为这个神器与其他还在神器的关联值乘以这个神器的法力值,为了减少反噬,tb148需要拿走每个神器,但由于他贪生怕死,他想让他受到的反噬值之和最小,现在tb148想知道,怎样拿走神器,才能让反噬值的和最小。
输入格式
第一行,神器的个数
第二行,每一个神器的法力值
接下来,将以邻接矩阵的形式输入神器之间的关联值
输出格式
最好的拿取方式所产生反噬值的和
输入输出样例
输入
4 2 5 1 7 0 343 154 12 343 0 214 132 154 214 0 441 12 132 441 0
输出
2179
分析
只需从矩阵对角线以左下找到两个数乘积最小并求和即可
程序
#include<bits/stdc++.h> using namespace std; long long a[10001] , ans , tmp; int main() { long long n; cin>>n; for(long long i = 1; i <= n; i++) cin >> a[i]; for(long long i = 1; i <= n; i++) { for(long long j = 1; j <= n; j++) { cin >> tmp; if(i > j) ans += tmp * min(a[i] , a[j]); } } cout << ans; return 0; }