自创CodeForcesHelperv1.0,解决CF太卡和跳题问题,代码持续更新!


前言

对于 OIers 来说,Codeforces 是一个很好的外国 OJ。

洛谷上确实收录了大部分 CF 的题,

但是最近由于 Codeforces 的 cloudflare 加强了,

所以洛谷的爬虫已经无法正确爬取提交记录的数据了,详见link

我们只能在洛谷修好爬虫前,放弃在洛谷上评测,转而到 Codeforces 上直接评测。

我的个人体验是:

  • 网络:有时候 CF 的官方网站会比较卡(也许是访问量大吧)
  • 题库:CF 的题库是不能按题目名字搜题的,所以我是现在洛谷上搜好,知道某道题在CF上的编号后,再去 CF 上看,结果在 CF 上想按照题号看题的话,必须手动该网址,对于我这种懒人,我感到需要优化一下。

一、方法

我自己编写了一个 html,可以用 Google Chrome 等浏览器打开,支持了输入题号跳题的功能,而且在官方网站卡的时候,可以切换成镜像(我用的是mirror.codeforces.com,它比较稳定)。

二、源代码

我放出源代码来,想研究的可以看看里面的注释:

<!DOCTYPE html>
<html>
    <head>
	    <title>CodeForces Helper</title>
        <meta charset = "UTF-8">
        <!-- 导入sweetalert -->
        <script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
    </head>
    <body>
        <h1>CodeForces Helper</h1>
        <p>This is a helper for CodeForces.</p>
        <!-- 表单的位置 -->
        <form action = "">
            <!-- 输入题号 -->
            <input type = "text" id = "contestId" placeholder = "Contest ID">
            <input type = "text" id = "problemId" placeholder = "Problem ID"><br>
            <!-- 是否使用镜像的两个选项 -->
            <input type = "radio" name = "mirrorFlag" value = "false">Use Official<br>
            <input type = "radio" name = "mirrorFlag" value = "true">Use Mirror<br>
        </form>
        <!-- 跳转按钮 -->
        <button onclick = "Jump()">Jump To The Problem!</button>
        <script>
            // 跳转函数
            function Jump()
            {
                // 获取输入的题号
                var contestId = document.getElementById("contestId").value;
                var problemId = document.getElementById("problemId").value;
                // 判断题号是否为空,防止误触跳题的按钮
                if(contestId == "")
                {
                    swal("Contest ID should not be blank!","Please input a valid Contest ID.","error");
                    return;
                }
                if(problemId == "")
                {
                    swal("Problem ID should not be blank!","Please input a valid Problem ID.","error");
                    return;
                }
                // 获取镜像选项
                var mirrorFlag = document.getElementsByName("mirrorFlag");
                if(mirrorFlag[0].checked) // 官方
                {
                    swal({
                        title: "You are going to be redirected to the OFFICIAL link of CF" + contestId + problemId,
                        text: "Click 'OK' to be redirected to the OFFICIAL link.",
                        type: "info",
                        buttons: true
                    }) // 弹出提示框
                    .then((value) => {
                        if(value) // 点击确认按钮时
                        {
                            window.open("https://codeforces.com/problemset/problem/" + contestId + "/" + problemId);
                            swal("Yeah!", "We succeeded!", "success");
                        }
                        else // 点击取消按钮时
                            swal("Oops!", "You canceled!", "error");
                    });
                }
                else // 镜像
                {
                    swal({
                        title: "You are going to be redirected to the MIRROR link of CF" + contestId + problemId,
                        text: "Click 'OK' to be redirected to the MIRROR link.",
                        type: "info",
                        buttons: true
                    }) // 弹出提示框
                    .then((value) => {
                        if(value) // 点击确认按钮时
                        {
                            window.open("https://mirror.codeforces.com/problemset/problem/" + contestId + "/" + problemId);
                            swal("Yeah!", "We succeeded!", "success");
                        }
                        else // 点击取消按钮时
                            swal("Oops!", "You canceled!", "error");
                    });
                }
            }
        </script>
    </body>
</html>

三、使用方法

将以上代码粘贴到一个 html 文件中,然后用浏览器打开,就可以看到一个表单,输入题号,选择镜像或官方,点击跳转按钮,就会自动跳转到对应题目的页面。

四、效果展示

打开长这样:

请添加图片描述

然后输入比赛编号和题目编号,例如题目为1204C时,在 Contest ID 中输入 1204,在 Problem ID 中输入 C,就像这样:

请添加图片描述

然后选择用官方网址还是镜像网址,就像这样:

请添加图片描述

或这样:

请添加图片描述

最后,点击 Jump To The Problem! 按钮,会弹出一个提示,你可以确认或取消,

请添加图片描述

点确认后会以打开新标签页的方式跳转到对应题目的页面,并弹出成功提示:

请添加图片描述

点取消的话,会弹出失败提示:

请添加图片描述

挺好的吧!


总结

这只是我写的一个小工具,目前功能简易。

有时间的话,我会持续更新它的,欢迎大家私信评论提出建议!

如果觉得有趣,可以给这篇文章点一下赞,谢谢!

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值