首页 > 其他分享 >HydroOJ 从入门到入土(19)导入题解和标程、题目数据统计(>=4.12.0)

HydroOJ 从入门到入土(19)导入题解和标程、题目数据统计(>=4.12.0)

时间:2024-05-13 16:11:21浏览次数:23  
标签:std 4.12 题目 19 题解 py cpp 标程

题解和 std 可以导入了,导出还会远吗?

目录

一、导入题解和标程

新版本更新了这个功能,方便从其他题库导入数据了。准备更新一下之前的 hydrolizer ,更新之前先做一下测试。

1. 目录结构

根据 @undefined,题解和标程 std 应该分别放置在 solutionstd 目录,这两个目录应该 和testdata同目录。同时,@undefined 给出的样例中,题解为 md 格式,std为 cc 格式。但至于其他格式是否可以,他只说了 能在语言设置找到对应的语言就行

为了验证具体使用方法,本次题目测试结构如下:

.
├── .DS_Store
├── problem.yaml
├── problem_zh.md
├── solution
│   ├── .DS_Store
│   ├── 11.py
│   ├── 22.pdf
│   ├── cpp.cpp
│   ├── jj1.png
│   ├── 题解.md
│   ├── 未命名文稿.docx
│   ├── 题解的副本.txt
│   ├── 未命名表格.xlsx
│   └── 未命名幻灯片.pptx
├── std
│   ├── .DS_Store
│   ├── a.cc
│   ├── a.cpp
│   ├── b.cpp
│   ├── c.cc
│   ├── d.txt
│   ├── x.py
│   └── y.py3
└── testdata
    ├── 1.in
    ├── 1.out
    └── config.yaml

特别说明:这里的 .DS_Store 是 mac 系统上一个臭名昭著的隐藏文件,只要打开过的文件夹都有,类似于以前 win 上的 desktop.ini

2. 测试结果

![image-20240513122849698](HydroOJ 从入门到入土(19)导入题解和标程、题目数据统计(>=4.12.0).assets/image-20240513122849698.png)

  1. 题目可以正常导入
  2. 导入之后会自动多出 5 条评测记录,4AC + 1System Error。点进去查看那个System Error,发现报错是 不支持的语言 DS_Store。 (省略问候苹果 1w 字。。)
  3. cpp 的 std 可以正常评测,但是不显示语言。
  4. txtpypy3 的文件直接没测,被忽略了。
  5. 题解和标程的文件名可以为中文。
  6. 题解有 10 条。没错,所有格式的文件全导进去了。但是方式是全部以纯文本格式读入,然后以 Markdown 格式来显示,所以非纯文本格式的题解(docx, pdf...还有那个万恶的 .DS_Store!)全部乱码,代码格式的题解没了换行。

3. 第二次测试

想起来去看了下源码(L517-526),发现题解确实不挑食,而 std 评测最多导入 5 条, py 没评测应该是数量超了。

另外,虽然 cpp 比较特殊,可以在没有对应语言设置的条件下运行,但是在 语言 一栏并不会显示所用语言,在题目 统计 中也没法单独选中这个语言进行筛选,只能在所有语言中显示,所以决定给他加一个语言设置试试。

于是第二次测试。

cpp:
  compile: /usr/bin/g++ -Wall -std=c++14 -o foo foo.cpp -lm -I/include
  code_file: foo.cpp
  display: C++
  highlight: cpp
  monaco: cpp

题目结构如下:

.
├── problem.yaml
├── problem_zh.md
├── solution
│   ├── 题解2.html
│   └── 题解.md
├── std
│   ├── d.txt
│   ├── x.py
│   ├── x的副本.py.py3
│   └── y.py3
└── testdata
    ├── 1.in
    ├── 1.out
    └── config.yaml

测试结果:

std 文件 测试结果 语言
d.txt System Error: 不支持的语言 txt。
x.py 100 AC Python
x的副本.py.py3 100 AC Python
y.py3 System Error: 不支持的语言 py3。
a.cpp 100 AC CPP

html 的题解,只有跟 Markdown 相容的部分可以正常解析,其他部分还是会直接文本显示然后挤在一起。

4. 总结:

关于题解:

  • 如果题目文件夹内存在 solution 文件夹并且文件夹内存在文件,OJ 会将文件夹内所有文件强制以Markdown 格式上传到 题解
  • 为避免乱码或者格式错误,必须以 md格式存放题解。
  • 为避免上传多余文件(尤其是 mac 系统),一定要注意过滤垃圾文件(下附方法)。

关于标程(std):

  • 如果题目文件夹内存在 std 文件夹并且文件夹内存在文件,OJ 会将文件夹内所有文件强制送到评测机进行评测。
  • 目前版本(4.12.2)最大评测 std 的数量为 5 个。
  • std 的格式(后缀名)需要与 语言设置 里的完全一致。比如,语言设置 中有个类型是 py.python3,如果则想评测此类型的文件,文件的后缀名必须是 .py.py3 而不能是 .py3
  • 对于常用的 cpp 格式,可以在 语言设置 中新增一个 cpp 类型,但显得有些多余。所以我倾向于把原有的 cc 格式全部改为 cpp 格式来解决这个问题。
  • 这个标程功能应该是用来检验题目正确性的,应该能检测出 std 在当前 OJ 的环境下,会不会 TLE 或者 MLE,或者出现不同编译器带来的 RE,等等。

去除 .DS_Store 的解决方法

不要用自带的右键 压缩,使用专门的压缩软件(比如 macZip),然后过滤掉 .DS_Store 或者隐藏文件即可。

二、题目数据统计

更新到 4.12.0 之后,题目右侧 文件 下方会出现一个 统计,点开之后可以看到这道题提交答案的详细的统计情况。

1. 范围

  • 所有人都可以看到

  • 可以统计到包括作业比赛的所有提交记录,比较方便。

  • 只统计 AC 代码。

2. 筛选选项

项目 排序 语言
运行时间 ASC(升序) 所有语言
内存占用 DESC(降序) C++
代码长度 Python
提交时间 ...

3. 无关紧要的小 bug

  • 在下方 递交统计 中,对于上传题目时自带的 std 评测,似乎只统计最后一次的评测记录。

  • 而且此前的题目多次删除并重新导入之后,题目统计中会带着之前所有这道题的提交记录。

标签:std,4.12,题目,19,题解,py,cpp,标程
From: https://www.cnblogs.com/bowen404/p/18189417

相关文章

  • 洛谷题单指南-动态规划3-P1880 [NOI1995] 石子合并
    原题链接:https://www.luogu.com.cn/problem/P1880题意解读:计算n堆石子合并的最小、最大得分,只不过这n堆石子是环形的,也就是首、尾也相邻,是区间DP的升级版-环形DP问题。解题思路:如果是常规区间DP的方法:对于n堆石子,考察区间的长度范围是1~n先枚举左端点i,范围是1~n再计算右......
  • THUSC总结PART1-比赛总结/题解
    第一次参加\(THU\)的营,战绩惨不忍睹.D1T1给出\(d\),\(n_1\cdotsn_d\),\(l\),求\[\sum_{i_1=0}^{n_1-1}\sum_{2_1=0}^{n_2-1}\cdots\sum_{i_d=0}^{n_d-1}\max(0,(i_1\oplusi_2\oplus\cdotsi_d)-l)\]其中\(d<=10\),\(n_i<=1e18\),\......
  • sqlserver2019安装
    说明:新版sqlserver安装分两部分:第一部分安装服务 第二部分安装管理工具 第一步:下载安装包 ed2k://|file|cn_office_professional_plus_2019_x86_x64_dvd_5e5be643.iso|3775004672|1E4FFA5240F21F60DC027F73F1C62FF4|/第二步:安装服务这里注意:    推荐第一种安......
  • 【问题解决】java.lang.NoSuchMethodError错误
    问题现象近期本人负责的一个SpringBoot模块出现了java.lang.NoSuchMethodError报错,问题情况如下:A类提供了setJumpType(Stringtype),B类调用A类的setJumpType(Stringtype)报错java.lang.NoSuchMethodError:com.xxx.A.setJumpType(Ljava/lang/String;)V在之前的发版的程序中,B......
  • abc353f 题解
    大分讨,由于没注意到细节挂大分。下面称大小为\(n\timesn\)的为大格子,\(1\times1\)的为小格子。把\(n\timesn\)个小格子组成的正方形称为一个部分。分析我们先来讨论一般情况。思考一对于\(n\ge3\)的一般情况,如果要求任意两个大格子到对方的距离最小,怎么做?根据贪......
  • cfRounddiv3--CDEF题解
    C-AssemblyviaRemainders思路:因为xi最大只有500,而构造的ai最大可以到1e9,直接从501开始构造即可。voidsolve(){//C简单构造intn;cin>>n;vector<int>vct;vct.emplace_back(501);for(inti=2;i<=n;i++){intx;cin>>x;vc......
  • 2024苏锡常镇高三二模19
    \(实际上不那么难\)......
  • 2024 年 5 月 12 日 母亲节 周日 晴 常(197 字)
    正文昨天玩到了凌晨3点,今天睡了一天……断断续续睡到12点起床,下午又从5点睡到了7点。我愿称之为睡神…….其它时间就是做工作日一直没时间做的杂事,比如洗衣服,刷鞋,换洗被套什么的,还挺花时间。用了得有两三个小时。所以昨天说的今天开摆,那是真的开摆了(笑......
  • Atcoder ABC 353 全题解
    最近看的人好少……都快不想写了……你们的支持就是我创作的最大动力!AB%你CDE题意:有一个一个一个函数,把函数两两配对式求值,求这些值最后的总和C考虑将所有的和减去$10^8$出现的次数。将整个数组排序,然后进行二分,求第一个与这个数的和$\ge10^8$的位置,然后与这个数......
  • abc_353_b题解
    这道题怎么说呢……开始看题目翻译也是一脸懵,然后直接就看了样例解释,然后:瞬间明白!所以:样例解释YYDS!样例解释YYDS!!样例解释YYDS!!!停停停不开玩笑了。仍旧是分步解决问题(诶不是怎么突然联想到了加法原理):输入(每道题几乎都有的东西~~~),不用多说,按照题目要求解决。循环。这一步......