要提交一个题,然后
出现这样的页面接下来点哪里,本人已经有一个了洛谷账号了
谢谢
引自免费微信小程序:皆我百晓生
为了在Vim-Jupyter(简称VJ)上远程登录洛谷并提交题目,你需要先安装必要的插件和配置。这里是一个详细的步骤指南:
确保你已经在Vim中安装了Vim-Jupyter插件: 如果还没有安装,可以使用下面的命令在Vim里安装Vim-Jupyter:
git clone https://github.com/klen/vim-jupyter.git ~/.vim/bundle/vim-jupyter
配置Vim-Jupyter:
打开~/.vimrc
文件,在末尾添加以下内容,根据实际情况修改路径和参数:
" 配置Vim-Jupyter
let g:jupyter_server_python = '/usr/bin/python3' " Python解释器路径
let g:jupyter_notebook_dir = '~/.local/share/jupyter/runtime/' " 笔记本运行时目录
nmap <silent> <Leader>j :<C-U>execute 'call Jupyter#OpenNotebook("' . expand(g:jupyter_notebook_dir) . '")'<CR>
启动Vim-Jupyter服务器: 在终端中执行以下命令启动Vim-Jupyter服务器:
python3 -m jupyter notebook --no-browser --port=8888
这将启动一个本地Jupyter Notebook服务器,并监听8888端口。
在Vim中打开Jupyter Notebook:
启动Vim,按下\j
(\
是 leader 键,通常是 Ctrl
或者 Esc
),这将会打开一个新的Jupyter Notebook窗口。
创建一个新的Python notebook: 在打开的Jupyter Notebook界面中,点击右上角的"+"按钮,选择"Python [conda env]"或"Python 3"(取决于你的环境)来创建一个新的notebook。
配置洛谷环境: 在新创建的notebook的第一行,粘贴以下代码并运行它,以设置洛谷的Cookie(请替换为你的实际账户信息):
import requests
import json
url = "https://www.luogu.org/login"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.3"
}
payload = {
"username": "your_username", # 你的洛谷用户名
"password": "your_password", # 你的洛谷密码
"keep_login": "on",
"next": ""
}
response = requests.post(url, data=payload, headers=headers)
cookie_dict = dict(response.cookies)
for key, value in cookie_dict.items():
if key.startswith("client_id") or key.startswith("_uid"):
exec(f"requests.utils.cookiejar_from_dict(cookie_dict)[{key}].value = '{value}'")
注意:这个方法依赖于requests库,如果你没有安装,可以通过pip进行安装:
pip install requests
编写代码并提交题目: 编写你的C++代码到notebook中的单元格内。完成后,可以在单元格上方选择"Cell" -> "Run Cell"来运行代码。确保代码正确无误后,复制输出结果。
通过洛谷API提交代码: 将你的洛谷题号、语言类型、编译器选项、代码和输出结果组合成POST请求,发送给洛谷的提交接口。以下是示例代码,你需要将其粘贴到新的单元格中并运行:
def submit_code(problem_id, language, compiler_options, code, output):
base_url = "https://api.luogu.org/problems/"
submit_url = f"{base_url}{problem_id}/submit"
payload = {
"language": language,
"program": code,
"options": compiler_options,
"input": "",
"output": output
}
response = requests.post(submit_url, data=payload, cookies=requests.utils.cookiejar_from_dict(cookie_dict))
return response.json()
problem_id = "12345" # 替换为你想提交的题目ID
language = "cpp" # C++语言
compiler_options = "-O2 -std=c++17" # 根据需要调整编译器选项
code = r"""
// 你的C++代码
"""
# 运行你的代码获取输出
result = run_your_code_and_get_output()
submission_response = submit_code(problem_id, language, compiler_options, code, result)
print(submission_response)
请确保已定义run_your_code_and_get_output()函数,用于运行你的代码并获取输出。运行上述代码后,你会看到提交的结果。
完成以上步骤后,你应该能够在Vim-Jupyter中远程登录洛谷并提交题目。注意,这种方法可能存在安全风险,因为它涉及到存储和使用你的洛谷凭据。建议仅在可信的环境中使用此方法。