谈谈 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 表示越相似 我 ...
随机推荐
- MyBaits查询MySQL日期类型结果相差8个小时
问题描述 在Java项目中使用MyBatis作为ORM框架,但是查询出的MySQL日期类型字段值总是比数据库表里的值多8个小时. 具体说明: MySQL数据库表字段类型为timestamp,映射的Ja ...
- Kafka本地单实例安装
下载安装 从国内镜像站点下载并安装Kafka安装包,以下载并安装v3.2.3版本为例. $ tar -xzf kafka_2.12-3.2.3.tgz $ cd kafka_2.12-3.2.3 启动 ...
- day05---系统的重要文件(3)
1) /usr/local 编辑 安装的软件 第三方软件安装位置 软件安装的三种方法 1.yum安装 自动解决依赖问题 yum [选项参数] 包名 第一个里程碑:我想要安装的软件的名字 或者是 知道命 ...
- JS内存爆破问题
原理 检测到调试,格式化等,疯狂的在js文件,或者html中进行读写,cookie重写追加,字节追加,导致内存不足够,卡死 内存爆破,指js通过死循环/频繁操作数据库(包括cookie)/频繁调取hi ...
- ASP.NET Core 应用(SignalR)发布到 IIS 报错(HTTP Error 500.19 - Internal Server Error)
参考资料: ASP.NET Core SignalR 入门 将 ASP.NET Core 应用发布到 IIS Download .NET Core 报错信息: HTTP Error 500.19 - ...
- 【Azure 应用服务】Azure Data Factory中调用Function App遇见403 - Forbidden
问题描述 在Azure Data Factory (数据工厂)中,调用同在Azure中的Function App函数,却出现403 - Forbidden错误. 截图如下: 问题解答 访问Azure ...
- protocol buffer 知识整理(备份)
定义消息: 最简单的例子: 1 // 下面是a.proto文件的内容 2 syntax = "proto3"; //必须指明proto3,否则会被认为是proto2 3 ...
- [Python] 通过md5去重 筛选文件代码
这是一些代码记录 这次是帮朋友恢复硬盘,扫描到的结果包含了好多个分区,通过将分区中的数据导出发现很多文件是重复的.所以想到通过python代码去重. 首先把所有分区的图片文件都放到一个文件夹A中,如果 ...
- TCP和UDP可以使用同一个端口号吗?
TCP和UDP可以使用同一个端口号吗? 首先说答案:可以.怎么理解呢? 我想这个问题要从计算机网络通信谈起,学过计算机网络的同学,可能都还记得7层或者4层网络模型,TCP/UDP属于其中的传输层协议, ...
- 软件发布时 生成发布日志文件 单点登录 getGitInfo.bat
需求 每次发包的时候,前端是3个包,如果后期出现问题,不好回查 所以把当前项目的git信息记录下来 以便回查 第一次手动写了下,发现比较麻烦,所以写个脚本,每次发布的时候 运行下即可 上代码 软件发布 ...