找回密码
 立即注册

QQ登录

只需一步,快速开始

songzh215

论坛元老

8

主题

30

帖子

5350

积分

论坛元老

积分
5350

活字格认证

songzh215
论坛元老   /  发表于:2012-4-10 18:09  /   查看:4336  /  回复:3
假设题目给了 许多的建筑物,比如说(1000000)个,算法最多只能运行30秒,我 用了0.5s作为缓冲, 剩下不到0.5s的时候,我每次仅仅返回Operation.Empty,而不做任何处理,可是每次 调用算法的时候需要消耗时间,虽然比较少,但是仍然可能消耗超过0.5s,然后我的程序会发生超时,对方得到全分,这种情况怎么处理呢?这种情况虽然说可能性小 ,但是 我已经遇到了,请问我该怎么解决呢?是不是可以理解为建筑物的个数再多也不会多到这种问题的出现那种程度呢?

3 个回复

倒序浏览
Iver
版主   /  发表于:2012-4-11 09:19:00
沙发

回复 1# songzh215 的帖子

你好,songzh215:
规则上不能避免这种情况的出现,所以要防止出现这种悲剧,还得在算法的设计上下点功夫。
回复 使用道具 举报
songzh215
论坛元老   /  发表于:2012-4-11 10:28:00
板凳

回复 2# Iver 的帖子

哦,谢谢了,不过我认为算法设计的再好,理论上是不可能避免这种情况出现的,每次调用都需要扣除调用算法方的一定时间,我认为这部分的时间不应该计入选手的总时间内的,否则因为这种情况而丢失全部分数我认为算法设计者会比较郁闷,因为明明我不做任何操作了,却仍旧扣除我时间。能否把这个问题改一改呢?
回复 使用道具 举报
Iver
版主   /  发表于:2012-4-11 10:53:00
地板

回复 3# songzh215 的帖子

你好,songzh215:
首先,不论你的算法返回了怎样的操作,是放置还是不放置,这都是你算法策略的一部分,耗时也理应算在你算法的总时间之内。
其次,在整个比赛的过程中,很多的状态和信息算法都是可以获知的,而算法也可以针对这些信息来判断如何有效和合理地使用时间。数据规模对于双方的算法是一致的。
退一步说,即使你说的最坏情况理论上是不可避免的,算法在设计上也仍然可以针对这一情况做一个利益最大化的均衡。不要把思维局限在超时与否这一个点上,你要知道你的算法的目标是获胜,而不是不超时,而且,你不是一个人在战斗。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部