Sanhai 的 AI检查
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目背景
SanhaiOJ 最近上线了“AI 辅助写代码”功能,但很快就遇到一个新问题:
有些用户提交的代码是自己写的,有些则是 AI 自动生成的。为了公平起见,OJ 需要一个检测模块,来判断一份代码是否“疑似 AI 生成”。
经过研究,Sanhai 发现 AI 生成的代码往往有一些特征:
- 变量名重复率较高
- 代码风格过于统一
- 出现一些“模板化”的片段
于是,他决定用一个简化的模型来检测:如果一份代码中,某些模式出现得过于频繁,就判定它是 AI 生成的。
题目描述
给定一段代码(用字符串表示),以及一个整数 。
我们定义“模式”为代码中的任意长度为 的子串。
如果存在某个模式在代码中出现次数 ≥ 2,则认为该代码“疑似 AI 生成”。
否则,认为该代码是“人工编写”。
请你实现这个检测器。
输入格式
- 第一行两个整数
- :代码的长度
- :模式长度
- 第二行一个长度为 的字符串,表示代码内容(仅包含小写字母和数字)。
输出格式
- 如果存在某个长度为 的子串出现次数 ≥ 2,输出:
AI - 否则输出:
Human
数据范围与提示
- 建议使用 哈希(Rolling Hash) 或 后缀数组/后缀自动机 来高效判断是否存在重复子串。
样例一
输入:
10 3
abcabcxxyz
输出:
AI
解释:
长度为 3 的子串 "abc" 出现了两次,因此判定为 AI。
样例二
输入:
8 4
abcdefgh
输出:
Human
解释:
所有长度为 4 的子串都只出现一次,因此判定为人工编写。
[SANHAI10月月赛]Round 2普及组
- 状态
- 已结束
- 规则
- IOI
- 题目
- 5
- 开始于
- 2025-10-14 21:00
- 结束于
- 2025-10-14 22:00
- 持续时间
- 0.7 小时
- 主持人
- 参赛人数
- 5