[四连测(三)]圆形谷仓

本文探讨了一道关于圆形谷仓中奶牛分布的题目,解析了解题思路。作者指出,由于题目描述的歧义,需要理解奶牛是均匀分布在每个房间。采用贪心策略,找到最优起点,按照特定顺序移动奶牛,可以得出解决方案。虽然存在多种贪心方法,但找到正确起点至关重要,且某些方法可能导致较高的时间复杂度。
摘要由CSDN通过智能技术生成

我复制了图片,样例什么的就不要在意了。

解题思路

也许有人很迷惑,这个样例怎么算出来的,至少都是上百啊,我身边是有人跟我这样说过的,确实,题目描述有一点问题。它说的是“每头奶牛都待在一个房间”,这句话是有歧义的。它没说是都在“一个房间”,还是均匀地在“每一个房间”。这道题呢,是均匀地在每一个房间,运用一下贪心,模拟什么的,绝对是可以弄出样例的。

其实,这道题的实际就是贪心,但这道题的思维量其实挺大的,究竟怎么样移动才能够花费最小呢?首先,一个很简单很简单的性质,每一个0,由它前面的最近的牛移动,如果多头牛,则选择移动最少的那头牛,这样肯定是最优的,不要问我怎么找到的。这可以说是没有问题的。可以说这就是我考试时的思路了,然而。。。你倒是算出来。。。模拟是真的复杂。

于是我们需要转换思路。其实我们找好一个起点。能将每一头牛排好序,移动就多好啊。是的,这样容易多了。不用讨论这么多,一下就可以算出答案。

关键就是找起点了。找起点的话最好就要让它这个位置奶牛数量为0或1,这样它是不会动了。而这个环就要顺时针向它来靠近。同时,移动后吧,我们需要留足够的空位给后面的牛,避免要重复移动,那么某一段中国房间数 - 奶牛数越大,这个起点其实越优,找到一个好的起点可以说是十分关键的,我们通过这样的一个起点,许多的贪心思路就可以做出来了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值