谈谈 OI 中的查重
鉴于最近洛谷的公开赛出现的重题引起的纠纷,我打算整理一下此类问题的危害和做法。
也许有时候无意的重题不会被处罚,但我想也应该尽量避免来换取选手的更好体验。
Part 0 什么是重题
原题大致可分为完全一致、几乎一致和做法一致三种。
- 完全一致:使用一题的 AC 代码可以 AC 另一题。
- 几乎一致:由一题的 AC 代码改动至另一题的 AC 代码可以由一个不会该题的人完成。
- 做法一致:核心思路、做法一致,但代码实现上、不那么关键的细节上有差异。
(from OIwiki)
重了广为人知的题的后果:
xuanxuan001的练习赛Round1
所以本文主要说一些不常见的题如何高效查重。
Part 1 善用搜索
题面搜索
说实话,很难通过复制粘贴题面来得到结果,尤其是全文比对。
因为没有搬题人傻到会复制原题。
通过这次可以知道复制题面的下场。
常见做法是人工提取简化题意或者简化思路后进行搜索。
算法搜索
更常见的做法是提炼出本题的关键算法。
线段树 拓扑排序 就这七个字,不要多。
据此在 bing(国际版) 和 google 上均可找到原题,而且页码非常前面。
解法搜索
对于出题人的题解,可以截取关键字进行搜索,因为一道题的题面不可能相同,算法又太宽泛,但常见解法往往不会很多。
当然,此做法的前提是原题传播较广泛且有较多人写题解。
题库搜索
经过我简单的统计,发现历次洛谷比赛的重题往往来自各大国外题库(Codeforces,Atcoder,······)
原因可能在于,这两个网站都是英文题面(或其他语种),经过出题人翻译后,很难通过中文查询。
对此,你可以尝试对上述方法中的关键字改为英文进行尝试。
你也可以大概估算题目的难度,到各大题库,确定筛选范围和算法,一般会有 200 题左右,一一验证基本不会再有重题。
做到这步绝大多数重题已经被查出了。
Part 2 人脉的重要性
团队人员
需要高水平选手。
一来可以帮助出题,二来高水平选手往往阅历更广,容易分辨一道题目是不是套路,看过的题更多,可以很大程度避免恶意搬题。
近期已经查收到多起出题组团队被篡改信息甚至大批盗题的信息。在这里提醒各个出题组不仅应当考察加团用户的题目质量或水平,也当对其心理年龄或者账号安全性等进行考察,以避免此类事件的发生。此外也不建议用户进入一些来路不明的团队,避免自己精心筹备的试题被盗用。
(from chen_zhe 的讨论贴)
这种盗用的题往往也很难被查出来。
如何防冷僻题
【例题 3】
像这种一些活动中的题目或者某地市级的比赛,往往很少有题库收录,也几乎没有题解。这时如果团队中人来自五湖四海,这种问题就极难以被提前发现。
例如校内 OJ 题,如果团队中大多数互相熟悉,就不会出现 JEOI R1 T3 的事件。
总之,对于传播不广的题目,查重便造成了很大难度,此时应该借助人力,尽可能地减少重题。
Part 3 结语
关于查重这个问题,

作者只是一时间心血来潮,若有补充和勘误,请告诉我。
致谢:所有人!特别是提到的。
谈谈 OI 中的查重的更多相关文章
- BPM中字段查重,C#Ajac调用示例
BPM中字段查重记录: 这也算是一个C#调用Ajax的示例吧,如果是异步加载的话async: false去掉就可以了. 需求:比如现在要录入一些信息,但是,有一个字段不能重复,BPM表都是自己生成的, ...
- Javascript中数组查重的方法总结大全
数组查重:简单点说,就是找出数组中重复的元素然后去除,最后得到一个没有重复元素的数组. // 方法一思路: 1.构建一个新的数组,用于存放结果. 2.for循环中每次从数组取出一个 ...
- 在PHP项目中使用Standford Moss代码查重系统
Standford Moss 系统是斯坦福大学大名鼎鼎的代码查重系统,它可以查出哪些同学提交的代码是抄袭别人的,从而将提交结果拒之门外.它对一切希望使用该系统的人都是开放的,那么在PHP的项目中如何使 ...
- 【实习记】2014-09-01从复杂到简单:一行命令区间查重+长整型在awk中的bug
9月1号,导出sql文件后,想到了awk,但很复杂.想到了用sed前期处理+python排序比较的区间查重法.编写加调试用了约3小时. 9月2号,编写C代码的sql语句过程中,发现排序可以交m ...
- 论文 查重 知网 万方 paperpass
相信各个即将毕业的学生或在岗需要评职称.发论文的职场人士,论文检测都是必不可少的一道程序.面对市场上五花八门的检测软件,到底该如何选择?选择查重后到底该如何修改?现在就做一个知识的普及.其中对于中国的 ...
- Javascript:面试经典套路-查重(reduce)
今天在偶然间查看到了一段代码,代码使用了很短的篇幅完成了字符串统计相同字符次数这个经典面试题,其中用到了reduce这个方法,网上查了查,没有查到什么有价值的东西,导致浪费了我一些时间才看懂,现将我的 ...
- 【NLP】Python实例:申报项目查重系统设计与实现
Python实例:申报项目查重系统设计与实现 作者:白宁超 2017年5月18日17:51:37 摘要:关于查重系统很多人并不陌生,无论本科还是硕博毕业都不可避免涉及论文查重问题,这也对学术不正之风起 ...
- 谈谈JAVA中的安全发布
谈谈JAVA中的安全发布 昨天看到一篇文章阐述技术类资料的"等级",看完之后很有共鸣.再加上最近在工作中越发觉得线程安全性的重要性和难以捉摸,又掏出了<Java并发编程实战& ...
- js查重去重性能优化心得
概述 今天产品反映有个5000条数据的页面的保存按钮很慢,查看代码看到是因为点击保存按钮之后,进行了查重操作,而查重操作是用2个for循环完成了,时间复杂度是O(n^2).没办法,只能想办法优化一下了 ...
- week07 13.3 NewsPipeline之 三News Deduper之 tf_idf 查重
我们运行看结果 安装包sklearn 安装numpy 安装scipy 终于可以啦 我们把安装的包都写在文件里面吧 4行4列 轴对称 只需要看一半就可以 横着看 竖着看都行 数值越接近1 表示越相似 我 ...
随机推荐
- 解决Springboot发起https请求报错:sun.sec urity.validator.ValidatorException: PKIX path building failed
问题描述 最近开发项目中在springboot接口中调用第三方https接口,后台日志报错: sun.sec urity.validator.ValidatorException: PKIX path ...
- Java并发编程实例--13.方法同步(synchronized)
使用synchronized关键字去控制对某个方法的并发调用. 某一时段内,只能有一个线程可以读取该方法. 其他线程需要等待前面线程调用完毕后方可调用. 不过,静态方法有着不同的行为. 虽然也是每次只 ...
- 《系列二》-- 2、bean 的作用域: Scope 有哪些
目录 作用域 Scope 特性概述 常规作用域 web 场景作用域 经典问题 模拟场景 解决办法 方法一 方法二 实现接口 BeanFactoryAware 阅读之前要注意的东西:本文就是主打流水账式 ...
- win32改变静态控件的文本大小
HWND static_ = CreateWindow(L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 100, 100, 10 ...
- TCP协议的流量控制和拥塞控制
一开始,我总是容易把这2个概念搞混淆了,因此,为了加深理解,我写出来整理下思路. 一:流量控制 什么是流量控制,它涉及到哪些内容呢? 首先,我们看看一个最简单的tcp传输涉及到哪些东西 发送端,数据, ...
- 以二进制文件安装K8S之环境准备
为了k8s集群能正常运行,需要先完成4项准备工作: 1.关闭防火墙 2.禁用SeLinux 3.关闭Swap 4.安装Docker 关闭防火墙 # 查看防火墙状态 getenforce #关闭防火墙, ...
- Web流式下载数据时展示提示信息
以Web方式下载数据有多种场景: 1.服务端本身已经存在文件,此时只需要一个文件访问地址即可下载,比如:将文件URL设置为<a>标签的href属性即可,点击<a>标签就能立即触 ...
- Postman文件数据导入导出
https://zhuanlan.zhihu.com/p/535757471?utm_id=0
- PRINCE2系列一基于项目情境自定义解决方案
PRINCE2(PRojects IN Controlled Environments,受控环境下的项目管理) 对项目进行了如下定义:项目是按照一个被批准的商业论证,为了交付一个或多个商业产品而创建的 ...
- CT图像重建
20世纪70年代中期,在医学领域出现了一种神奇装置,名为"计算机辅助 X 射线断层成像仪"(简称CAT或CT),它能够在不损伤病人的情况下,提供人体从头到脚各部位的断层X射线图像. ...