题目背景
本题难度普及-,请noip两个组别的选手都把它AC(不然你noip省三都保不住了)
ps:三年OI一场空,day1T1见祖宗。。。
题目描述
Cozy Glow偷偷摸摸的造了一个魔法阵,这个魔法阵在吸取小马国的魔力,所以你得赶紧把它毁掉。
这个魔法阵由若干个神器组成,每个神器都有一个法力值,每两个神器之间也都有一个关联值。你要依次把这些神器拿走,但是,每拿走一个神器,你就会受到一定量的反噬,反噬的量为这个神器与其他还在神器的关联值乘以这个神器的法力值,为了减少反噬,tb148需要拿走每个神器,但由于他贪生怕死,他想让他受到的反噬值之和最小,现在tb148想知道,怎样拿走神器,才能让反噬值的和最小。
输入输出格式
输入格式:
第一行,神器的个数
第二行,每一个神器的法力值
接下来,将以邻接矩阵的形式输入神器之间的关联值
输出格式:
最好的拿取方式所产生反噬值的和
输入输出样例
输入样例#1
4 2 5 1 7 0 343 154 12 343 0 214 132 154 214 0 441 12 132 441 0
输出样例#1
2179
说明
神器个数<=1000
所有其他的值<=2000000
正对角线上的数保证都是零。。。
思路
哪有蓝题难度。。就是模拟贪心的过程。。
#include <stdio.h>
#include <iostream>
using namespace std;
long long int a[1001],n,s,t;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
register long long int i,j;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a[i];
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cin>>t;
if(i>j)
{
s+=t*min(a[i],a[j]);
}
}
}
cout<<s<<endl;
return 0;
}