Mixing Milk 2020.4.18纪中考试第一题

总结:
这次考试考得非常的差,300分的题目只考了110。好不容易老师出了一波水题,我……
废话不多说,这次的题目同样是USACO的题目。总体难度不大,应该是普及-。
T1:Mixing Milk
一开始这道题目我想到了一道题,母亲的牛奶。但仔细一看题, 就不一样。就是将3个桶里的元素(牛奶)倒来倒去,有两个规则:1.如果一个桶倒到另一个桶时,他装不下那么多,那就将他装满即可。2.如果他装的下,那就倒给他。
我们可以立即想出一个非常暴力的方法,模拟枚举。但是这里要注意了(我就是这里被坑了……),我们要循环的次数是100/3=33次还要手动+1。所以这里只要循环33次就好了。
而我们可以接着往下看,样例解释已经说明了他其实可以是循环节。也就是说,循环可以简化成4。但考试的时候,我还是用了第一种方法。
部分代码(核心)a数组是容量,b数组为牛奶总数

n=3;
for(int i=1;i<=33;++i)
{
	out=(i-1)%n+1;//out,求出现在要倒元素的桶,in就是out要倒的桶;
	if(out==n)//要构成循环节
		in=1;
	else
		in=out+1;//接下来是两种情况
	if(a[in]-b[in]>=b[out])
	{
		b[in]+=b[out];
		b[out]=0;
	}
	else
	{
		b[out]-=(a[in]-b[in]);
		b[in]=a[in];
	}
}

最后,愉快的输出b数组就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值