7
审核比赛的可以看这个(doge-作者更新下一期了!!!-------------------------------------------
请不要以自己作为某种特例来反驳这些AI所表现出的特征
AI的代码编辑本来就是按照程序员最科学严谨的方式编写的
所以,如果你遇到了与AI码风相似的情况
请不要以“我写代码就会有XXX条特征”的格式发表评论
有特例是正常的
作者更新了!!!
作者更新了!!!
作者更新了!!!
作者更新了!!!
作者更新了!!!
作者更新了!!!
作者更新了!!!
作者更新了!!!
作者更新了!!!
作者更新了!!!
作者更新了!!!
《人类代码的特征》
《人类代码的特征》
《人类代码的特征》
《人类代码的特征》
《人类代码的特征》
《人类代码的特征》
《人类代码的特征》
访谈
此为作者对某人的对话
此为作者对某人的对话此为作者对某人的对话
此为作者对某人的对话
此为作者对某人的对话
此为作者对某人的对话此为作者对某人的对话此为作者对某人的对话
此为作者对某人的对话
此为作者对某人的对话
此为作者对某人的对话
作者用的是乱七八糟的语言,AI看不懂(自带防伪
发现评论区一个很好玩的东西
*关注我,下期继续揭晓其他主题
如果有AIer把这一段喂给AI,也不需要担心;
管理会出手
本来就有很多人类也有的特征,喂给AI反而欲盖弥彰
后期修改的AIer我们这篇帖子也没辙
所以,你可以把这一篇当做识别AI的手段,或是当做水帖也可以
食用过AI的人总是能轻易的看出AI代码的特征,但是总有一些非常厉害的AIer。以下特征可以帮你揪出他们
1.几乎不用万能头
2.设置的变量很长,并经常带有下划线
例如:
人
AI
3.遇到黄题以上的题目,第一个代码是部分分甚至没分的。至少要让他修改到第二段代码以上才会正确。修改次数与题目难度有关
4.注释像是给别人看的
5.代码中的空格一个不缺,非常多
6.会运用一些大多数人所不知道的,老师不会讲的函数或运算符
7.基本只用vector动态数组
8.不会在主函数里写很多代码,基本都是void函数
9.有时候不加using namespace std;代码里全是std::
10.对题目的要求有时候会无视,自己创建
11.对于类似的、不同题目的代码,AI有时会认为是同一道题的
12.AI有时会越界判断,例如题目要求1<n<1e9,AI会判断为零的情况
13.AI 对返回值为 void 的函数通常不写 return;
14.AI对于格式这方面总是PE
15.相比于人类,AI会用我们基本不会用的指针和链表
16.部分AI生成for循环时会采用++i,但由于使用这个的人类比AI更多,所以不建议作为评判依据
17.for循环的一次性变量AI会使用不同变量名(大多数
18.AI在输出时可能使用三目运算符等方式确保不会输出行末空格
19.AI经常不必要地输出行末回车
20.AI基本不使用#define
21.AI基本不会将多个操作变量的语句间使用逗号分隔(如s-=a[i],k<<=2之间的)
22.AI经常创建变量存储接下来要用到的值,尽管这个值可能非常简单且使用很少(如多重背包的k*w[i])
23.一些AI的代码会在int main(){}上加一个空行
24.喜欢写类似于循环条件为char c:s之类
例如下面的深搜模版
还有一种神秘方法:查看用户主页,看是否发过题解,没有正确率还很高,几乎就是AI;查看用户答题时间,1分钟一题(黄的以上)的基本都是AI\color{yellow}{查看用户主页,看是否发过题解,没有正确率还很高,几乎就是AI;查看用户答题时间,1分钟一题(黄的以上)的基本都是AI}查看用户主页,看是否发过题解,没有正确率还很高,几乎就是AI;查看用户答题时间,1分钟一题(黄的以上)的基本都是AI
对于聪明的AIer,我们可以把题目喂给每一个AI(目前基本是deepseek),然后核对所用方法是否一致
不用担心AIer把此篇喂给AI
这个是评论区一个人问AI后的结果
豆包:AI代码的特征
还挺有道理的
在信息学奥赛(如 NOIP、CSP、IOI 等)题目中,AI 生成的代码除了具备通用 C++ 代码的特征外,还会因竞赛场景的特殊性呈现一些更具体的表现,这些特征与人类选手的竞赛代码习惯形成鲜明对比:
对 “竞赛技巧” 的处理生硬
人类选手:擅长使用竞赛专用技巧,如位运算优化(lowbit、状态压缩)、常数级优化(循环展开、寄存器变量register)、输入输出加速(iossync_with_stdio(false);)等。
AI 生成代码:较少主动使用这些技巧,即使题目涉及大数据量,也可能默认用cin/cout而不加加速,或对可优化的循环保持 “朴素写法”。例如:
cpp
运行
// 人类可能的写法(加速输入)
ios::sync_with_stdio(false);
cin.tie(0);
// AI可能直接写
cin >> n; // 不做任何加速
算法选择 “模板化”,缺乏场景适配
人类选手:会根据题目数据范围灵活选择算法(如 n≤1e5 用 O (n log n),n≤1e4 用 O (n²)),甚至对同一问题混合使用多种算法(如 “小规模用暴力,大规模用 DP”)。
AI 生成代码:倾向于套用 “标准算法模板”,不考虑数据范围的边界情况。例如:
对 n≤100 的题目,可能依然实现复杂的线段树而非直接暴力;
对需要 “贪心 + 特判” 的题目,可能只实现纯贪心导致部分用例错误。
对 “题目隐藏条件” 的敏感度低
竞赛题目:常包含隐含约束(如 “数据保证无环”“输入为正整数”),人类选手会利用这些条件简化代码。
AI 生成代码:可能无视隐含条件,做冗余处理。例如:
题目明确 “树结构无环”,AI 仍在 DFS 中加入环检测代码;
题目说明 “k≤10”,AI 却按 k≤1e9 的情况实现复杂的二分逻辑。
代码 “健壮性过剩”,忽略竞赛效率
人类选手:在竞赛中优先保证效率,允许 “在题目约束内安全” 的不严谨(如默认数组开足够大,不检查动态内存分配失败)。
AI 生成代码:可能加入过多错误处理,导致超时。例如:
cpp
运行
// AI可能的写法(冗余检查)
if (i < 0 || i >= n || j < 0 || j >= m) {
cerr << "Invalid index" << endl;
exit(1);
}
// 人类选手可能直接写(依赖题目约束)
grid[i][j] = 1;
对 “输出格式” 的处理机械
竞赛题目:对输出格式要求严格(如 “每行末尾无空格”“多组数据空行分隔”),人类选手会针对性处理(如用变量记录是否为第一个元素)。
AI 生成代码:可能用统一模板处理(如三目运算符判断是否加空格),但容易在复杂场景(如多组测试用例)中出错,导致 PE(格式错误)。例如:
cpp
运行
// 处理多组输出时,AI可能多输出空行
for (int t=0; t<T; t++) {
solve();
cout << endl; // 最后一组也输出空行,导致PE
}
变量命名 “过度清晰”,不符合竞赛简洁性
人类选手:习惯用短名(n,m,k表示数据量,i,j表示循环,dp[i]表示动态规划数组),节省编码时间。
AI 生成代码:变量名冗长且与问题强绑定(如number_of_vertices max_weight_capacity),在竞赛中显得冗余。
对 “样例输入” 的依赖度高
人类选手:会分析题目逻辑,考虑边缘情况(如 n=0、数据全相同)。
AI 生成代码:若训练数据中缺乏特定边缘情况,可能只通过样例而忽略极端用例。例如:
题目要求处理 n=0 的情况,AI 代码可能因样例中 n≥1 而直接崩溃。
这些特征的核心原因是:AI 对竞赛场景的 “语境理解” 不足,只能基于通用编码规范和算法模板生成代码,而人类选手则会结合竞赛经验(效率优先、抓隐含条件、适配数据范围)进行针对性优化。在实际判题中,这些差异往往体现在 “AI 代码能通过部分样例但难拿满分”,而人类选手的代码则更贴合竞赛的 “应试逻辑”。
如有缺失,欢迎补充
//请把特征||AI代码发在评论区,如有代表性,会采取
此文章并不反对AI,但是不能不正当的运用AI
有帮助,赞一个