HDOJ的提交记录抓取与初步分析





突然萌生一个有意思的想法,如果抓取一个Online Judge的全部提交记录,是不是能从中分析出什么有用的信息。我昨天开始抓取HDOJ(http://acm.hdu.edu.cn)的所有提交记录,挂了一个晚上,截至今天下午终于抓完了HDOJ从第一个提交到昨天下午1点多的所有提交记录。共计4131493条,抓取并格式化存储花了大约十几个小时。
目前最理想的想法是根据用户的做题顺序分析题目类型,也即应该会有不少用户倾向于连续的做类型相近的题目,于是也许能仅仅根据提交记录就分析出题目类型了,甚至进一步做个题目推荐系统。但是能否做到我还不清楚。拿到数据后我先做了一些宏观上的没什么技术含量的简单统计。画几个图出来看看吧。

上图是每年的提交数量随月份的变化曲线。可以看到各条曲线明显位置不同,说明每年的提交数目都在增加,HDOJ越来越火。单看一条曲线,可以发现1月份和6月份提交数量明显最少,应该是因为考试的原因。

上图是每年的提交AC率随月份的变化曲线。基本AC率都在30%多或者40%多的样子。AC率虽然没有那么明显的变化,也基本上和年份没什么关系,但是可以看到和月份还是有一点点关系的。6月份的提交通过率大致上是各个月份里面最高的,但是6月份却因为期末考试的原因提交数量很少。于是这说明什么呢?考试周仍然积极训练的ACMer通过率会略高。而3月份和9月份的通过率都比较低,这说明一批新手开始训练了。

上图从左到右分别代表2006至2010年五个年份,每个年份都有若干柱形图代表代表每类提交结果在当年左右提交中所占的比例。Accepted排名第一,Wrong Answer排名第二,其他常见错误都会比Wrong Answer少很多。这里面只有一个有点意思的小变化,Time Limit Exceeded的比例大致是在减少的,这是否说明了机器有过更新变快了?也许06-07年间或08-09年间有更换过测评机器的配置?
如果有对分析HDOJ提交记录感兴趣的同学可以留下邮箱找我要HDOJ格式化好的提交记录,文件大小为286MB。以上分析仅供娱乐,后面打算再做更有实际意义的分析,如果有好结果再发布。

本文来自Dora Blog,题目为HDOJ的提交记录抓取与初步分析,转载请注明出处。
如果你喜欢我的博客,请订阅本博客的RSS以更方便的阅读
欢迎关注我的新浪微博:http://weibo.com/diaorui1987