AI代码的特征
2025-08-27 18:40:08
发布于:浙江
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
关注我,下期继续揭晓其他主题
日志:8.19第一次发布,7特征
8.20-8.25 每天一条特征
8.26 更新2特征
8.27 更新9条特征
食用过AI的人总是能轻易的看出AI代码的特征,but如果这个AIer十分高明?以下几点特征,祝你揪出AIer
1.几乎不用万能头
2.设置的变量很长,并经常带有下划线
例如:
人
int c,n;
string b;
AI
int count,number;
string bad_thing;
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之类
例如下面的深搜模版
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
// 递归实现模板
void dfs_recursive(int node, vector<bool>& visited, const vector<vector<int>>& graph) {
visited[node] = true;
// 处理当前节点(如输出、记录路径等)
cout << node << " ";
for (int neighbor : graph[node]) {
if (!visited[neighbor]) {
dfs_recursive(neighbor, visited, graph);
}
}
}
// 迭代实现模板(显式栈)
void dfs_iterative(int start, const vector<vector<int>>& graph) {
vector<bool> visited(graph.size(), false);
stack<int> stk;
stk.push(start);
while (!stk.empty()) {
int node = stk.top();
stk.pop();
if (!visited[node]) {
visited[node] = true;
cout << node << " ";
// 逆序入栈保证顺序与递归一致
for (auto it = graph[node].rbegin(); it != graph[node].rend(); ++it) {
if (!visited[*it]) {
stk.push(*it);
}
}
}
}
}
int main() {
// 示例图结构(邻接表表示)
vector<vector<int>> graph = {
{1, 2}, // 节点0的邻居
{0, 3, 4}, // 节点1的邻居
{0, 5}, // 节点2的邻居
{1}, // 节点3的邻居
{1, 5}, // 节点4的邻居
{2, 4} // 节点5的邻居
};
cout << "递归DFS: ";
vector<bool> visited_rec(graph.size(), false);
dfs_recursive(0, visited_rec, graph);
cout << "\n迭代DFS: ";
dfs_iterative(0, graph);
return 0;
}
还有一种神秘方法:
如有缺失,欢迎补充
//请把特征||AI代码发在评论区,如有代表性,会采取
全部评论 52
看到第12条我蚌埠住了,每次我问WA助手我错哪,它老是问我是否考虑n为0,但是题目保证了1<n
4天前 来自 上海
2这个真难绷
3天前 来自 广东
0它还
不知好歹(友善)地表示“虽然题目保证了n>0,但是还是要判断一下n=0的情况”3天前 来自 上海
0是的,有一次我用Prim做一道最小生成树,WA、TLE了,问AC助手它就提到了这点(后来我去问了老师,说Prim基本没法做)。
昨天 来自 广东
0
ai喜欢总结出一堆数学结论,人一般喜欢暴力枚举
50分钟前 来自 广东
1AI的代码通常变量的名字都是一整个的英语单词,还带下划线的那种
例如:
人:int cnt=0,num=3;string bad;
AI:int count=0,number=3;string bad_thing;
1小时前 来自 上海
1有了
55分钟前 来自 浙江
0
上榜了
6661小时前 来自 浙江
1%%%
1小时前 来自 上海
0
第5条有点说不过去了吧?看我平时的代码
2小时前 来自 江西
1加空格增强代码可读性
1小时前 来自 江西
0补充:一些AI的代码会在开头加一个空行
1小时前 来自 江西
0ok
1小时前 来自 浙江
0
补充,AI遇到范围大的难题一般会加ios_base......和cin.tie(0),变量总是要用了在前一行开,会用typedef,还喜欢写那个类似于char c:s之类的东西,for循环总写i=0;i<n;++i,简单一点的题还好,难一点的就直接写的程序猿都看不懂
重点:AI很喜欢哈希表!!!2小时前 来自 江苏
1ok
1小时前 来自 浙江
0
补充:AI经常会加些奇奇怪怪的特判,比如题目明明保证1<=n<=1e5,但AI经常会特判n=0的情况
但是我觉得2和7有问题,因为本人就喜欢用带下划线的变量名,增强可读性(大学的ACM队也经常用,具体参考一本书《龙舌兰未解散》),vector更是开不下数组时常用的东西4天前 来自 上海
1仅作为参考
4天前 来自 浙江
0只能说你不是一般人
4天前 来自 浙江
0而且AI正确率很低的OK?绿题正确率就不足20%了(大概),蓝题能拿30我就谢天谢地了
4天前 来自 上海
0
补充:广搜题不跟AI说是广搜它会写深搜代码
4天前 来自 北京
1已补充
4天前 来自 浙江
0
天之神月赛疑似AI代码
看到这个用户主页我差点吓死
你告诉我就刷两题就能广搜一遍过什么意思4天前 来自 北京
16
4天前 来自 浙江
0用户主页不能作为评判标准,因为你不能肯定用户没有使用过其他 OJ
4天前 来自 江西
0冷知识,这人T1到T6代码全是注释+单词变量,T7纯骗分,虽然是黑题,但是至少其他人还思考来着,他没有思考
代码证据:
4天前 来自 北京
0
我的ai是天天用万能头,但是不写
using namespace std;
后面都是
std::cout<<...;
十分无语。
5天前 来自 广东
1已补充
4天前 来自 浙江
0
买挖机配件吗
30分钟前 来自 广东
0我想到些新的:
- AI在输出时可能使用三目运算符等方式确保不会输出行末空格
- AI经常不必要地输出行末回车(比如输出只有一个数的情况)
- AI基本不使用#define(当然大部分人也不用)
- AI经常通过const定义变量或数组(比如DFS要用的dir[][],MAXN等,尽管有些人也这么做)
- AI基本不会将多个操作变量的语句间使用逗号分隔(如s-=a[i],k<<=2之间的),当然很多人也这么做
- AI经常创建变量存储接下来要用到的值,尽管这个值可能非常简单且使用很少(如多重背包的k*w[i])
2小时前 来自 江西
0ok
2小时前 来自 浙江
0
1
2小时前 来自 浙江
01
7小时前 来自 浙江
01
9小时前 来自 浙江
01
10小时前 来自 浙江
0AI老是写一堆多余的代码。举例:题目保证关键数据的范围,AI硬写判断范围代码。定义函数时括号里的参数就喜欢用int&(这可能无伤大雅)。输出明明只是一个数字,样例也是,非要输出“因此,xxx的结果为:”接着是结果
昨天 来自 上海
0而且老喜欢用猎奇方法,又臭又长,还错,变量也是,又臭又长,另辟蹊径这一块
每次有了点头绪AI这一通操作和猎奇方法直接让你露头的一点结果烟消云散
昨天 来自 上海
0ok
昨天 来自 浙江
0???????
22小时前 来自 上海
0
少数ai习惯将循环变量增加条件写为++i
昨天 来自 上海
0少到我不能采用
昨天 来自 浙江
0并非,其实挺多的
昨天 来自 江苏
0我确认一下,确认无误会加上的
昨天 来自 浙江
0
点评一下,仅代表个人意见:
1.还是有些人不爱用万能头的,因为命名容易起冲突,比如我。
2.(涵盖第二至第五条)那当然,AI毕竟是AI,肯定是向着为用户服务而设计的。
6.(第六条至第九条、十一、十三条)也许,不确定。
10.(第十、十二条)确实,就像那个AC(WA)助手……昨天 来自 广东
01
昨天 来自 浙江
0
有帮助,赞一个