谈谈 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 表示越相似 我 ...
随机推荐
- 学习go语言编程之错误处理
error接口 Golang中有一个关于错误处理的标准模式,即:error接口. type error interface { Error() string } 对于大多数函数,如果要返回错误,大致上 ...
- ContentType组件表使用
https://www.shuzhiduo.com/A/qVdepN2r5P/
- HAProxy端口资源耗尽的解决办法
项目背景 系统使用HAProxy为mq和部分应用的负载均衡服务.近期,瞬时流量过大,导致出现连锁反应,HA开始波动. HAProxy版本:1.6.3 问题分析 心跳检测大量失败,项目状态极不稳定.观察 ...
- 【Azure Redis 缓存】Azure Redis 4.0 被扫描到漏洞,如何修补呢?
问题描述 在安全级别要求高的公司中,任何系统都会进行安全扫描.比如Azure 云上的Redis服务,也在扫描的范围中,最后发现Redis 4.0存在以下漏洞: CVE-2019-10192:https ...
- 【Azure 云服务】Azure Cloud Service中的错误事件 Error Event(Defrag/Perflib) 解答
问题描述 在Azure Cloud Service的实例中,收集到各种 Error Event 内容,本文针对所收集的三种Event进行解析. 1: This operation is not sup ...
- 【Azure 云服务】Azure Cloud Service 关于虚拟机资源,杀毒软件配置,补丁机制的问答
一:云服务后端是2台虚拟机,Work Role,Web Role,可以RDP进去,但是为什么在虚拟机列表里看不到呢? 因为云服务(经典)是PaaS服务,有别于传统的IaaS服务,其提供的WebRole ...
- 【Azure 应用服务】使用命令行创建 webapp 应用出现命令语法不正确错误
问题描述 根据Azure App Service 入门文档 "快速入门:在 Linux 上的 Azure 应用服务中创建 Python 应用" 在创建App Service应用时候 ...
- Nebula Graph 源码解读系列 | Vol.04 基于 RBO 的 Optimizer 实现
上篇我们讲述了一个执行计划是如何生成的,这次我们来看下这个生成的执行计划是被 Optimizer 优化的. 概述 Optimizer,优化器,顾名思义就是一个用来优化执行计划的组件.数据库的优化器通常 ...
- Java 多态 案列
1 package com.bytezreo.duotai; 2 3 //多态性的使用 举例一 4 public class AnimalTest 5 { 6 public static void m ...
- Java UML类图
在UML的静态机制中类图是一个重点,它不但是设计人员关心的核心,更是实现人员关注的核心.建模工具也主要根据类图来产生代码.类图在UML的9个图中占据了一个相当重要的地位.James Rumbaugh对 ...