牛客oj 习题7.1代理服务器(经典贪心)

 

经典贪心问题,刚开始怎么也看不懂题,寻思着要想切换次数尽可能少,直接找个和所有服务器都不相同的代理服务器或者找个最迟出现的和代理服务器相同的服务器不就好了。。想了很久才意识到这个最迟出现的代理服务器相同的服务器可以多次出现,这样在切换这个最迟服务器之前(要想抵达这里代理服务器ip必须和这个服务器相同)前面由于也是同名代理服务器所以必定会卡死,所以要考虑到要访问服务器出现多次的情况。

既然如此,问题就转化为每次都选取一个代理服务器,使他代理的服务器尽可能多。由于服务器访问是顺序访问,所以可以用步数代替,故转化为每次选取一个代理使他走的步数尽可能多。由于无后效性(当前一步和前一步无关),贪心策略达成。

这题还是卡了我很久,原因在于step数组初始化位置错误,然后答案还显示不出错,很隐蔽,用排除法才找到错。。。还有,本题需要考虑特殊情况,出现无法抵达的情况只可能是代理只有一个的时候,因为一旦一个以上,都可以通过切换改变当前代理后通过。综上,好题。

 

说起贪心,贪心思想就是只要找出当前最优解即可,说起来简单,可是题目好多时候灵活性过于强,和DP有类似之处,感觉有思路就是在有限时间内写不出来。对于这种情况,我认为如果不是参加比赛的话可以适当放弃,毕竟任何人智商还是有差距的,拿自己的短板刚对手的长项,并不合理。

 

 

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vec
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值