Logo ryp 的博客

博客

WyOJ 的下一步

...
ryp
2026-03-23 15:49:50
你似乎还未明白

我打算把 WyOJ 设计成可以给大家进行自习的系统。自习是很重要的,也占据了大部分 OIer 的大部分在役时光。所以如何利用好自习时间是很重要的。

另外,我们也需要给教练提供一个可用于训练的平台。

具体地,我打算做一个类似 Duel 但超越 Duel 的东西。传统的 Duel 是随机题目,并且双人。我们可以做多人,并且根据 AI 以及推荐算法来精准推荐一些适合这些选手的题目。我们可以根据每个人擅长的题目,推荐每个人的舒适区各一道或者更少,以此让每个人不至于无题可做的同时,可以做一些自己不一定很擅长的题目。

另外,我们可以根据每次 Duel 的结果,来更新每一个人的面孔。Duel 是比普通做题记录更珍贵的资源,因为在 Duel 中我们可以知道每个人做每道题的时间、尝试次数等等参数。

我们怎么实现呢?

首先要实现一个远端评测系统。也即,利用 HK 的云服务器将提交请求转发到洛谷,并跟踪结果。另外我们可以利用 HK 的服务器爬取题解并在本地用自己的显卡来进行分析。

没有更多难写的东西。

等到大周以及清明尽量实现一下。我觉得没有那么难。

具体实现:

相似题目推荐

相似题目推荐是基本中的基本。因为这个玩意需要一定算力,因此把他做成异步的,后面用一个 FastAPI,用 frp 之类的反代到一个子域名。

需要实现什么功能呢?

  • 给定用户,根据他通过的题目,进行匹配,得到相似题目,并按照难度召回

  • 给定关键词,根据关键词匹配出相似题目,并按难度筛选或者召回

然后就是前端。前端可以做在首页,这样比较帅气。按一个按钮就自动搜索相似题目。

远端题库

如前。可以用 HK 的服务器甚至是集群,用个 Redis 或者之类的简单队列维护一下,细节比较多,尤其是和 UOJ 那堆写的没法说好的评测系统结合的时候应该会不怎么舒服。最简单的方式是,提交到数据库,然后本地再跑一个消费者推送到远端的 Redis。

Duel

这个没那么难写,但是应该没法融合到原来的比赛架构里头,这玩意儿简直是屎山。最好是新开一个类似比赛的页面。

评论

xuyunao
磕了 /bx

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。