seve 的 代码规范
1. 命名规范
1.1 变量命名
- 
[1.1.1] 使用小写字母与下划线组合
所有变量应使用小写字母,多个单词使用下划线连接。
✅ 例:int cur_node, scc_cnt; - 
[1.1.2] 必要时可省略下划线以提高输入速度
在代码结构清晰或命名长度过长时可适当省略下划线。
✅ 例:int scccnt; - 
[1.1.3] 避免非通用缩写
除了广泛使用的缩写(如cnt、n、m、dfn),其余尽量使用完整单词。 - 
[1.1.4] 常量命名采用全大写加下划线
✅ 例:constexpr int MAXN = 1e4 + 10; - 
[1.1.5] 常量INF定义应为
1e91e18而不是2147483647这样的极限值,出现超过2次的神秘数字应设为常量 
1.2 函数命名
- 
[1.2.1] 使用小写字母与下划线组合
✅ 例:void add_edge(int u, int v); void tarjan(int u); 
1.3 结构体与类命名
- 
[1.3.1] 使用 PascalCase(大驼峰)命名法
✅ 例:struct Edge { int to, next; }; 
1.4 宏与类型别名命名
- 
[1.4.1] 宏名必须全大写并使用下划线分隔
✅ 例:#define LOCAL - 
[1.4.2] 类型别名使用
using代替#define
❌ 不推荐:#define int long long✅ 推荐:
using ll = long long; 
2. 容器与数据结构使用规范
2.1 序列容器
- 
[2.1.1] 优先使用
std::bitset替代bool数组
✅ 例:bitset<MAXN> instk; - 
[2.1.2]
std::vector用于动态大小数组,避免固定长度场景 - 
[2.1.3] 固定长度数组优先使用
std::array
✅ 例:array<Edge, MAXM> e; array<int, MAXN> head; - 
[2.1.4]
std::stack,queue,priority_queue等 STL 容器优先使用,避免手写实现 
2.2 关联容器
- [2.2.1] 当时间复杂度容忍时可使用 
set/map替代数组 - [2.2.2] 避免使用 
unordered_map/set进行离散化(哈希易炸) - [2.2.3] 离散化建议使用排序 + unique + lower_bound
 
3. 实现规范
3.1 输入输出方式
- [3.1.1] 默认使用 
cin/cout,必要时使用快速 IO - [3.1.2] 禁止混用 
scanf/printf与cin/cout 
3.2 格式规范
- 
[3.2.3] 布尔值直接使用
true/false,不比较== true
✅ 例:if (instk[v]) ... - 
[3.2.4] 所有变量声明时空格规范
✅ 例:int n, m; 
3.3 实现细节规范
- [3.3.4] 推荐使用auto遍历迭代器,但是不要使用中括号打包,推荐引用
 - [3.3.5] vector优先预分配空间
 - [3.3.6] 不使用define, 而是使用inline内联。特别的,短函数应加inline标签
 - [3.3.7] 取模时应在只需减的时候减
 - [3.3.7] 带/的不等式判断需要移项尽量避免除法运算
 
4. 代码格式与结构风格
4.1 文件头
- 
[4.1.1] 使用万能头文件
#include<bits/stdc++.h> - 
[4.1.2] 使用
using namespace std; 
4.2 常量定义
- [4.2.1] 使用 
constexpr而非const定义常量 
4.3 缩进与空格
- 
[4.3.1] 使用
tab缩进(4 空格) - 
[4.3.2] 运算符、比较符号前后留空格
✅ 例:if (a == b && x + y > z) 
4.4 结构体写法
- 
[4.4.1]
{紧跟结构体名,不另起一行
✅ 例:struct Edge{ int to, next; };- [4.4.2] 优先使用构造函数而不是init()
 
 
4.5 长行换行风格
- 
[4.5.1] 当超过一行时,在逻辑操作符(如
&&,||,+,-)处换行对齐
✅ 例:if (x > 0 && y > 0 && z > 0) { ... } 
5. 调试与断言规范
- [5.1.1] 禁止调试信息混入正式代码提交
 - [5.1.2] 推荐封装调试宏 
#ifdef LOCAL ... #endif 
✅ 推荐:
#ifdef LOCAL
#define debug(x) cerr << #x << " = " << x << endl;
#else
#define debug(x)
#endif
- 
[5.1.3]
assert用于关键边界条件检测
✅ 例:assert(1 <= n && n <= MAXN); 
6. 风格性防御性编程
- [6.1.1] 注意越界判断和边界保护
 - [6.1.2] 禁止过度宏定义(如定义 int 为 long long)除非题目强制需要
 - [6.1.3] 多组数据处理必须提前初始化所有状态
 
                    
                
                
            
        
浙公网安备 33010602011771号