ZOJ上第一场比赛

    一直以来,都只是听说ZOJ是我们国家OJ做得最早的,但都没有真正去那里做过题,因为一开始学长们就推荐我们到POJ上做,后来又几场比赛都是在TOJ上做的,所以,也就接触得TOJ更多一些而没有去ZOJ看下了。

    今天下午,第一次参加了ZOJ上的比赛,是八月份的月赛。感觉呢?大体上而言还算好的,至少题目相对TOJ而言我觉得会更容易理解一些,而且,就今天的题目而言,似乎难度也有所控制。因为比赛开始的比较早,12点就开始了,而我要回去吃饭,12点过10分才到达机房,一个队友已经在看题目了(另外一个队友因为一些私事回家了),我大概地看了一下题目,发现1006 Puzzle这个题已经有好些人交了。然后,我就猜想这个题目应该不会难,否则大家怎么会交得这么快呢?所以,我决定做这个题,还好,很快就看懂了题目,开始错误的理解成只有1到9这9个数字,所以就想开个长度为9的数组,然后第一行输入之后,在输入第二行的时候从第一行中进行匹配,后来发现题目理解错了,便重新想,想到了排序的方法,这个方法是可以的,但有个弊端,如果同一个数被输入多次的话,就不行了,因为我是采用的二分查找,我觉得直接从左到右的遍历肯定会超时。于是决定采用二维数组,第一维用来保存数据的值,第二维用来保存这个数据出现的次数,然后第二行输入的时候,就进行寻找,能够找到就进行第二维减1操作,同时将结果加1,等到第二行的输入结束的时候,结果也就出来了。

    然后做得就是1002Collision Ball Game,一个物理题,关于光的折射,想通了就蛮简单的。就是将给出的B点关于那条已知的直线求对称点,然后连接这个对称点跟A点的距离,即为最后的结果。不过要注意,这种题目一般都对精度有一定的要求,而且,系统提供的库函数tan都是用弧度作为单位的。

    做完这两个之后,我的那个队友选择了做第一个,因为他在我来之前就有看过那个题,而我就选择了1004Extreme Gameplyer 。最初想到的方法是动态规划,但我对这个不是蛮熟,尤其是这个题目中,要用三维来做(我个人觉得),所以采用了DFS的方法。写完之后,通过了测试数据,然后自己又想了几组数据,都没有问题,便决定交了。不过这个时候服务器似乎还是一样,跟我们刚才交1002一样,交了好久都没有反应,以至于我们1002交了9次。同时,因为看到1004这个题总共交的次数与过的次数接近6;1,我觉得可能不会这么好过,便又想了一下,没发现什么问题,就帮他一起想他的那个该怎么搞,最后,我的超时了。仔细一想,也是,DFS都类似于暴力搜索,虽然我有做了很多剪枝,但数据量相对而言还是大了一点。最后,改用DP来做,结果没有实现成功,而他那个,也没有完成。赛后,对他那个题目,我有了一点新的想法,觉得从时间或者空间效率上应该都是可以接受的,什么时候找个时间弄一下,试试看吧!

    每一场比赛都会有所收获的,我一直都这样认为,就看我们站在怎样的位置,而这也不例外。它教了我很多,需要我更加细细地口品味一下,才能够更好地为我所利用,才能够更好地被我吸收,助我成长。


你可能感兴趣的:(ZOJ)