OJ题目推荐小工具——POJ Plus && HDOJ Plus

八月 31st, 2011 | Posted by diaorui in 技术文章
欢迎转载,转载请注明出处。




转载注记:作者Philo Yangdiaorui的个人Blog上看到一篇博文建议根据OJ提交记录的信息对题目进行分类以及推荐,针对POJ和HDOJ制作了很有意思的小工具。本文根据Philo Yang的两篇日志合并而成,推荐各位ACMer使用。

灵感来源是这里,他把所有的HDOJ的提交数据抓了下来,大致分析了下AC率随着时间的变化而变化一类的。然后因为人们做题经常在一段时间内接连做相同类型的题,因此往数据挖掘的方向发展的话可以做一个自动的题目分类系统。于是这个我东西应运而生,也顺便看看怎么写userscript。只不过是我抓了我更经常去的POJ的提交数据。

userscript挺方便,安装对应油猴插件后跨浏览器。尤其是chrome原生支持,现在看来当年我写的那个屏蔽淫淫垃圾新鲜事的其实也可以写成userscript。爬虫写的效率比较低,大致只抓了题号和结果,准备抓ranklist里前1W的,目前抓了能有1000吧,不过已经足够提炼出数据了。

因为做某道题不代表最后会AC,很多时候会放弃。而AC后做的题通常是更进阶的题目,放弃后做的相对会简单些。因此对AC和nonAC的情况做分类统计,各取前5名(由于后面很多题过的人很少而且目前只抓了1000人左右的提交数据,因此可能不到5个或者因为数据规模小因此并非同一类的问题).

如前文所说,杭电的版本现在也弄好了~~也顺便更新了下POJ版本的数据库,当然因为写的爬虫效率很低现在也只有1000多一点用户的数据,但可以凑合用。

既然为了方便广大ACMer,稍微介绍下如何使用吧。

userscript就是一个js的脚本(以.user.js结尾),因为js可以通过DOM API动态修改网页的结构,所以只要浏览器可以插入一段非网页本身自带的js就可以人为修改网页了。userscript本来是用于一个叫Greasemonkey的强大的firefox扩展(点链接安装),因此实际上是用于firefox的,然后chrome从当年的某个版本开始(貌似4.0左右)直接支持userscript的载入而不用装插件,于是也可以用了。当年研究过chrome的插件有点忘了,实际上如果不调用额外的chrome API的话两者也没啥区别。其他浏览器我不常用,不知道能否直接间接的支持,自行google吧。

原理前文提了,因为人们经常是通过google搜OJ的题目分类然后对应分类的在一段时间内突击做题,因此做完一道题后更倾向于做同类的题目(再次感谢daorui提供想法!)。然后我觉得一般如果过了一道题就更倾向于做一道稍微难点的,而一道题没AC最后放弃会倾向于转到一道稍微简单的题目上。因此分为AC/nonAC两个列表,各取次数最多的前5题。如果并列的话谁在前和后完全取决于python的map.items()的顺序……

然后昨天又额外添加个链接,点一下就能直接google题解……反正也不是很占地方,如果不喜欢这个链接就无视掉吧。

效果图:(因为博客服务器在米国,教育网会悲剧)

如有任何建议和疑问欢迎随时提出,谢谢。

POJ plus 地址:http://userscripts.org/scripts/show/111406

HDOJ plus 地址:http://userscripts.org/scripts/show/111806

来源:
http://blog.yangzhe1991.org/2011/08/%e5%86%99%e4%ba%86%e4%b8%aauserscript%e2%80%a6%e2%80%a6poj-plus%ef%bc%8c%e5%b8%ae%e5%8a%a9%e5%88%b7%e9%a2%98%e7%9a%84%e2%80%a6%e2%80%a6/
http://blog.yangzhe1991.org/2011/08/poj-plus-hdoj-plus/

You can follow any responses to this entry through the RSS 2.0 You can leave a response, or trackback.

留言

电子邮件地址不会被公开。 必填项已用*标注