[洛谷]P5132 Cozy Glow之拯救小马国 (#贪心)

题目背景

本题难度普及-,请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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值