找回密码
 立即注册

QQ登录

只需一步,快速开始

tbugs
中级会员   /  发表于:2010-3-31 16:23  /   查看:13199  /  回复:21
当双方在对弈的过程中,cpu时间怎么分配,一方获得2秒之后,就休眠了,轮到另一方2秒?

还是我们的算法线程一直都在跑,一直都在思考?

请出题人说说其中的内部实现潜规则~
路,在此绽放。

21 个回复

正序浏览
jinggangdou
中级会员   /  发表于:2010-4-5 18:08:00
22#

回复 20# Arthas 的帖子

哈哈,太狠了吧!!
回复 使用道具 举报
lgjfly
注册会员   /  发表于:2010-4-5 12:13:00
21#
各种大牛啊 学习了
回复 使用道具 举报
Arthas
葡萄城公司职员   /  发表于:2010-4-1 10:29:00
20#

回复 19# Valentine 的帖子

我错了~~!!!!
      Evil Arthas
扯淡第一高手
回复 使用道具 举报
Valentine
版主   /  发表于:2010-4-1 09:51:00
19#
原帖由 quab1 于 2010-3-31 22:23:00 发表
1.上面说算法的线程是说,写好的算法只能占用单一线程吗?
2.还有,要不在第一步的时候多申请点内存让对方没有内存可用?这个允许吗?我直接NEW了个几百万那么大的数组。。。
3.还有,如果上面的允许,那是因为这个算法类每两秒都要重新构造,重NEW所有的东西吗?是指我想把前一步计算的结果带到下一步,在类里写的非静态数据会保留吗?比如:我有个走法表,我不想每次都重算走法,就保存在了类里,但是我希望自


1. 参赛选手可以使用多线程(不过需要注意在你的计算完成后棋盘类会被加锁,只允许你的对手访问直到他计算完成),如果用得好确实能够提升效率但是用的不好。。。不要忘记出了异常直接判负哦
2. 恶意行为包括申请大内存,计算完成后还高额占用CPU等属于违规行为,我们会阅读代码的,请相信我们的阅读能力。Ps: 被小胖带坏了?怎么都那么邪恶捏
3. 当然可以使用成员标量来缓存计算结果,我们不会在每一步完成后销毁并重新创建实例的,不过目前的对战平台在程序启动或更换玩家时会创建新的算法实例,正式比赛的时候每一局都会重新启动一个竞技场进程的。
回复 使用道具 举报
Valentine
版主   /  发表于:2010-4-1 09:41:00
18#
原帖由 tbugs 于 2010-3-31 17:31:00 发表
不能用反射这个东西吧,不然还下什么五子棋,那样下棋有意思没?


放心吧,参赛选手没有反射的权限的:)
回复 使用道具 举报
Valentine
版主   /  发表于:2010-4-1 09:39:00
17#
1. 2秒限制的意思是最多可以使用2秒,不会死等着两秒钟的
2. 五子棋属于战棋类游戏,不会有A在下棋B在同时思考的机会,大家在一个线程中顺序的依次调用,依次下棋
3. 如果一方占用了过多的内存,程序确实可能crash掉(那你得占了多少内存啊~),遭遇crash后,组委会可能会阅读双方代码,发现恶意占用内存的情况的话,按照违规处理
回复 使用道具 举报
winking
葡萄城公司职员   /  发表于:2010-3-31 23:18:00
16#
1.上面说算法的线程是说,写好的算法只能占用单一线程吗?

没有这个限定吧,如果有这个能力用好,那是锦上添花的。:+

2.还有,要不在第一步的时候多申请点内存让对方没有内存可用?这个允许吗?我直接NEW了个几百万那么大的数组。。。

申请大内存是很消耗时间的,而且你不知道最终评审会如何界定选手的使用内存、运行时间的方法和其他环境因素。
假如评审测试每步使用进程模式,如果你这么做,也就仅仅你这一步得不到结果而已;
假如评审使用每步使用线程模式,如果你这个做,和可能这个测试程序就Crash了,谁也没有得到……:-| ;
还有其他很多的假如……:+

3.还有,如果上面的允许,那是因为这个算法类每两秒都要重新构造,重NEW所有的东西吗?是指我想把前一步计算的结果带到下一步,在类里写的非静态数据会保留吗?比如:我有个走法表,我不想每次都重算走法,就保存在了类里,但是我希望自己的算法跟自己的算法PK,所以我没写成静态,我不清楚这个走法表在走到下一步时候会保留吗?我是指系统会不会每两秒就重构造一个算法对象

同上,你需要很小心的处理你自己给出的各种假设。
回复 使用道具 举报
quab1
高级会员   /  发表于:2010-3-31 22:23:00
15#

回复 14# winking 的帖子

1.上面说算法的线程是说,写好的算法只能占用单一线程吗?
2.还有,要不在第一步的时候多申请点内存让对方没有内存可用?这个允许吗?我直接NEW了个几百万那么大的数组。。。
3.还有,如果上面的允许,那是因为这个算法类每两秒都要重新构造,重NEW所有的东西吗?是指我想把前一步计算的结果带到下一步,在类里写的非静态数据会保留吗?比如:我有个走法表,我不想每次都重算走法,就保存在了类里,但是我希望自己的算法跟自己的算法PK,所以我没写成静态,我不清楚这个走法表在走到下一步时候会保留吗?我是指系统会不会每两秒就重构造一个算法对象
回复 使用道具 举报
winking
葡萄城公司职员   /  发表于:2010-3-31 21:55:00
14#
原帖由 quab1 于 2010-3-31 21:19:00 发表
静态的东西不运行GetNextStep就有了吗?那不就是说,只要把该用到的提前建好,就不用占用两秒时间了,是这样吗?我正头疼大量NEW占时间太长呢


通常来说new对性能影响有限,从IL角度说就是newobj instance语句;从汇编的角度来说也就几次压栈和出栈。真正影响性能的是这个对象的构造实现、算法中的复杂度、代码中的重入(显示For,For...Each,While,还有隐式递归)
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部