第四次-uva410-贪心

uva-410
题意:国际空间站在其实验室中包含许多离心机。每个离心机将具有一些(C)个腔室,每个腔室可包含0,1或2个样品。您将编写一个程序,将所有S样本分配给腔室,使得没有腔室包含超过2个样本,并且IMBALANCE的以下表达式被最小化。 (来自谷歌翻译)
每行数的和与c/s的差的绝对值就是imbalance.
题解:
若s为零,则imbalance为零,但输出格式仍然需要体现。若s<=c,说明可能某一行的可以不放置,故只需要一个放一行即可,(若一行放两个,imbalance将变大)。
若s>c,又有一些行必须放一个数字的话,放单个数字的地方必须是元素里面最大的那几个,否则将造成的大的数越大,小的数越小,imbalance的值也会越大。
思路是贪心,先排序,如果S<C 那么直接填,否则的话,先处理大的,将前2*C-S个大数占一个格子,剩下的几个,按两头取,例如:1 2 3 4 取 1,4和2,3分别填到格子里!

s==0时也要输出的格式

if (s == 0)
		{
			for (int i = 0; i < c; ++i)
			{
				ans += ave;
				cout << ' ' << i << ":" << endl;
			}
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值