谈谈 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 表示越相似 我 ...
随机推荐
- CF1398C Good Subarrays(写给我们萌新团体)
Good Subarrays 传送门: Good Subarrays - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 暴力!!!!! 一如既往的暴力!!! 复杂度O(n^2) ...
- Python 潮流周刊第 39 期(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- ChainMap合并字典
在python中,我们有两个字典需要合并的时候,可以使用字典的update方法 a = {'a': 1, 'b': 2} b = {'x': 3, 'y': 4} a.update(b) print( ...
- JS内存爆破问题
原理 检测到调试,格式化等,疯狂的在js文件,或者html中进行读写,cookie重写追加,字节追加,导致内存不足够,卡死 内存爆破,指js通过死循环/频繁操作数据库(包括cookie)/频繁调取hi ...
- 【算法day2】复杂度和简单排序算法(2)
插入排序 有以下数组 数组:[2,4,3,6,1] 序号:[0,1,2,3,4] 第一次排序(范围0~0):2左边没东西,不动 第二次排序(范围0~1):4左边是2,4大不动 第三次排序(范围0~2) ...
- 【Azure API 管理】API Management service (APIM) 如何实现禁止外网访问
问题描述 API Management service 设置禁止外网访问,请求通过外网(Internet)将无法解析到APIM的网关地址,只能通过APIM所集成的内网(Virtual Network) ...
- CPNtools协议建模安全分析---实例变迁标记(五)
之前的说了库所的标记,现在我们开始加讲变迁标记 1.描述变迁的标记有四种类型,分别是变迁的标记,门卫的标记,世间的标记,代码片段的标记. 咋变迁中限制更严格的输入token,其中Code Segeme ...
- Tiktok api接口 获取视频列表、用户详情,视频无水印数据采集
iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的Tiktok数据采集API,供用户按需调用. 接口使用详情请参考Tiktok接口文档 接口列 ...
- Android Studio 有关 setOnClickListener() 方法的总结
•前言 在 Android Studio 开发中,你会经常和这种代码打交道: 1 package com.example.activitytest; 2 public class FirstActiv ...
- JS案例-网页轮播图
鼠标经过轮播图模块,左右按钮提示,离开隐藏左右按钮 点击右侧按钮一次,图片往左播放一张,以此类推,左侧按钮同理 图片播放的同时,下面小圆圈模块跟随一起变化 点击小圆圈,可以播放相应图片 鼠标不经过轮播 ...