《算法艺术与信息学竞赛》之 堆 可怜的奶牛

这道题网上没有找到,暂时之说说思路。
题目大意是:有n头奶牛(n<=100 000)每只奶牛每天都有一个产奶量。(每只牛的产奶量呈现出周期性变化,每只牛周期都不超过10,每天产奶量不会超过200)。每天产奶量最低的一直奶牛将会被杀了吃肉,但是如果产奶量最少的有多只,那么就不会有奶牛被杀。
需要求的是最后有多少只奶牛幸免于难。

首先尝试着暴力去做,则需要模拟2520天(1,2,3…10的最小公倍数),每天有100 000只牛,显然会TLE。

我们发现题目中唯一比较小的数就是他们的周期了,最大不超过10,则我们将奶牛分为10组,每一组的奶牛周期是相同的,对于每一组的奶牛每一天我们都开一个堆,然后可以在一个非常优秀的时间内得到每一组的最小值。在没有牛被杀的情况下,这个集合可以一直不更新。但当有牛死之后,我们就要考虑删除元素的问题了,具体的删除的话我认为可以用时间换空间,即先维护一个used数组,然后将每一个删除的元素打上标记,再到再次扫描到之后,我们再对其进行删除,这样就不会再增添新的时间。
所以,这个题应该就可以过了,然而并没有数据给我测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值