题目似乎有点不着边际,请各位耐心的看完,就知道其中的含义了。
已经接触了一段时间的ACM(详见百度百科)了,每回刷杭电oj的题累了的时候,就喜欢去看Ranklist里面的排名,看看前面的牛人的格言,让自己有一点憧憬。有一天突然好奇杭电上的人做的总题数的数量与人数之间有怎样的分布规律,这样就可以知道大多数的人做了多少题就停了下来。
说干就干,我先用用java代码写了一个抓取上面Ranklist网页的程序到本地后,利用正则表达式解析内容并提取其中的数据,最后导入到数据库中。技术方面不想讲的太详细,只想说下其中遇到的问题。
抓取网页速度太慢。近两千个网页似乎抓取了近十分钟,后来采取多线程抓取网页,由于学校网速还是很慢,速度只提升了几倍。
利用正则表达式提取网页中的内容时,由于正则表达式选取的问题有些用户名中含有< >导致一些数据提取错误,不过后来解决了。
导入mysql数据库太慢(数据比较多),不知道是不是可以用多线程对数据库中的同一个表进行写入,如果可以的话,效率有没有提高。
获取到数据只是第一步,接下来更麻烦的工作是数据分析了。图像比较直观,先画个图像。说明:X轴代表解决题目的数目,Y轴代表解决了这么多题的人数。虽然杭电有20多万注册量,但只有前60000名刷过的题数大于等于3,我们不考虑60000名以后的。
第一次看到程序画出来的图,感到不可思议。我原先猜测图像可能会有一些波峰波谷。但是图像并没有这样的特征,而是飞速的下降直到趋于平缓。得到大致图像后,并没有结束,我想用一个函数关系来近似描述这个曲线。
于是我和我的室友将这些数据输入到matlab中来求拟合曲线,选取拟合程度最好的两个数据如下:
General model Power2:
f(x) = a*x^b+c
Coefficients (with 95% confidence bounds):
a = 1.571e+004 (1.53e+004, 1.612e+004)
b = -0.9897 (-1.004, -0.9758)
c = -38.22 (-42.7, -33.75)
Goodness of fit:
SSE: 2.529e+006
R-square: 0.9731
Adjusted R-square: 0.9731
RMSE: 50.47
General model Exp2:
f(x) = a*exp(b*x) + c*exp(d*x)
Coefficients (with 95% confidence bounds):
a = 4.392e+004 (-5.091e+017, 5.091e+017)
b = -0.1001 (-1.629e+005, 1.629e+005)
c = -3.835e+004 (-5.091e+017, 5.091e+017)
d = -0.1001 (-1.852e+005, 1.852e+005)
Goodness of fit:
SSE: 3.762e+006
R-square: 0.96
Adjusted R-square: 0.9599
RMSE: 61.58
拟合度最高的函数是
f(x) = a*x^b+c
其中
a = 1.571e+004 (1.53e+004, 1.612e+004)
b = -0.9897 (-1.004, -0.9758)
c = -38.22 (-42.7, -33.75)
让我们来使这个式子更简洁。我们不考虑a 和 c,而b近似于-1,最后得到
Y = 1 / X
想必大家都知道了,这就是我的题目是这个函数的原因。竟然是反比例函数,这代表什么涵义呢?
这样,我们规定刷的题越多越牛逼,那么这个函数说明了牛逼的程度和牛逼的人数成反比。这是什么破结论啊,不用这个我都知道啊。不过我实在没想出好的自然语言去解释这个式子,不知道读者们有什么看法。
但是我们更深入的去分析数据,发现刷了400题以下的占总人数的99%,而刷题数>=400的人只有1%,那些刷题过了400题的,应该就是我们口中所说的大神吧。
这就像我们的人生的经历,每个人都想成为人群中的1%,但是大多数人都在这之前停了下来。我们会想到一切客观的因素,来叹诉命运的不公。但事实却是,我们还不够努力。
最后送一句话给那些正在实现自己梦想途中的ACMer
做好1000道题,区域赛就可以拿金牌了。
----郭嵩山
- 大小: 9.9 KB
- 大小: 22 KB
- 大小: 24.7 KB
- 大小: 23.3 KB
分享到:
相关推荐
google-app-engine-ranklist-ndb google-app-engine-ranklist-ndb是来自的分支项目 对原始代码进行了以下更改 使用ndb代替原始数据存储 带有播放器名称的get_score函数 基本测试代码 该项目包括原始存储库中的示例...
首先使用以下命令克隆存储库git clone https://github.com/utkarshkanswal/Leetcode-Ranklist-Generator-.git 2.下载并安装MongoDb您可以从查看整个下载和安装过程3.打开Windows Powershell并输入以下命令,然后按...
Ranklist是Google Appengine的python库,它实现了一种数据结构,用于存储整数得分并快速检索其相对排名。 有关更多详细信息和用法示例,请参见ranker / ranker.py中的文档字符串。 例子 可以在“示例”目录中找到...
在CocosCreator中创建一个List组件,由于CocosCreator本身不内置List组件,开发者需要自行实现。这个过程可以通过参考和改造CocosCreator的example项目,比如`assets/case/02_ui/05_listView`的demo来完成。在这个...
这个“jQuery排行榜列表文字向上间歇滚动代码”就是一个使用jQuery实现的特效,它主要用于动态展示排行榜列表中的文字,通过向上滚动的方式吸引用户的注意力,常应用于新闻网站、电商榜单或者实时更新的数据展示。...
下面是一个简单的示例代码: ``` import numpy as np from sklearn.metrics import roc_auc_score def calc_auc(y_labels, y_scores): f = list(zip(y_scores, y_labels)) rank = [values2 for values1, values2 ...
使用此扩展,用户只需在新标签中打开(CodeChef或CodeForces)中正在进行的竞赛的Ranklist页面和... ,用户刚刚拥有 要在新选项卡中打开(Codechef或CodeForces)中正在进行的竞赛的Ranklist页面,并且扩展将自动...
[Q]会员排行榜 通用版[价值89元] 手机同步显示! 本站购买使用的[Q]会员排行榜 通用版 分享给大家 ...1、本插件可单独生成一个页面显示站点的会员的积分排行 ,帖子排行,主题排行,好友排行榜. 2、后台可设置调用会员数量
1 -> 步骤 2 -> 步骤 3 -> 步骤 4 ###结果: ranklist/ 包含检索到的排名列表 ap/ 包含每个查询的平均精度 MAP.txt 包含平均平均精度的值(运行步骤 4 时也会在屏幕上打印出来) ###来自外部来源的图书馆: lib/...
系列的一个版本,作为一款广泛使用的社区论坛系统,其目录结构的设计对于系统的稳定运行至关重要。本文将详细介绍Discuz!X各个目录的功能与作用,帮助用户更好地理解和使用该系统。 #### 二、核心目录介绍 ##### 1...
在“PHP-校花评选-埃洛等级分系统(Elo rating system)”项目中,开发者使用了PHP这一流行的服务器端脚本语言来搭建一个基于Elo评分机制的投票系统。Elo等级分系统最初被应用于棋类比赛,以衡量选手的实力水平,但其...
以下是一个基于第二种方法的AUC计算的Python实现: ```python def calAUC(prob, labels): # 将概率和标签组合并排序 f = list(zip(prob, labels)) rank = [values2 for values1, values2 in sorted(f, key=...
观察到URL中存在`U('User/ranklist', array('type' => 0))`,这是ThinkPHP的URL模型生成方法,它将生成一个指向`User/ranklist`控制器方法的URL,并附带参数`type=0`。你可以根据`type`参数来区分月排行和总排行。 ...
总的来说,这个课程设计实验报告展示了如何运用面向对象编程和数据结构(如数组和类)来构建一个实用的运动会分数统计系统。通过Record、Subject和School类的巧妙组合,实现了对运动员成绩、项目排名和学校总分的...
1 -> 步骤 2 -> 步骤 3 -> 步骤 4 ###结果: ranklist/ 包含检索到的排名列表 ap/ 包含每个查询的平均精度 MAP.txt 包含平均平均精度的值(运行步骤 4 时也会在屏幕上打印出来) ###来自外部来源的图书馆: lib/...
1489 2^x mod n = 1 简单题,应该有好算法,不过枚举就可以过…… 1503 One Person "The Price is Right" 简单题,POI Eggs的翻版 1512 Water Treatment Plants 简单题,组合计数 1526 Big Number 简单题,不过O(1...
11. **合并**:`combine(Shunxulist *shunxulist1,Shunxulist *shunxulist2, Shunxulist *shunxulist3)` 函数将两个已排序的列表`shunxulist1`和`shunxulist2`合并成一个新的已排序列表`shunxulist3`,通常使用归并...
在Unity游戏开发中,数据持久化是一个至关重要的环节,它涉及到如何在游戏关闭后保存玩家的进度、设置或排行榜信息等,并在下次游戏时能够恢复这些数据。本篇将深入探讨Unity中的数据持久化方法之一——`PlayerPrefs...
【成绩管理系统】是一种用于教育机构自动化管理学生考试成绩的应用程序,它旨在提高效率,增强数据安全性,并简化成绩的录入、查询、修改、统计等操作。随着信息技术的发展,此类系统成为教育单位不可或缺的一部分,...
它有一个输出方法(output),用于显示学校的总分信息。School 类也是 RankList 的友元类,允许 RankList 访问其私有成员。 4. RankList 类:这是整个系统的中心,它包含5个 Subject 对象,表示所有的比赛项目。...