常用变量名速查表

在算法竞赛(尤其是 Codeforces)中,为了节省时间,我们通常会使用一些约定俗成的简短变量名。这张表格整理了这些常用变量及其典型用途,帮助你快速理解和编写代码。

变量名 典型用途 中文解释 示例
n, m 数组大小、节点数、边数 数量/大小 int n, m; cin >> n >> m;
i, j, k 循环变量 循环计数 for (int i = 0; i < n; i++)
t or T 测试用例数量 测试组数 int t; cin >> t; while(t--)
q or Q 查询数量 查询次数 int q; cin >> q;
a, b, c 临时变量、数组名 数组/临时值 int a[maxn];
x, y, z 坐标、通用变量 坐标/通用值 cin >> x >> y;
cnt 计数器 (Counter) 数量统计 int cnt = 0;
ans 答案 (Answer) 最终结果 long long ans = 0;
res 结果 (Result) 中间或最终结果 int res = solve();
sum 总和 (Summation) 累加和 long long sum = 0;
dp 动态规划 (Dynamic Programming) DP数组 int dp[1005][1005];
mod 模数 (Modulo) 取模运算的常量 const int mod = 1e9 + 7;
inf 无穷大 (Infinity) 表示极大值 const int inf = 0x3f3f3f3f;
knapsack 背包问题 背包算法相关 knapsack_01();
l, r 区间左右端点 (Left, Right) 区间/双指针 int l = 0, r = n - 1;
mid 中间值 (Middle) 二分查找 int mid = l + (r - l) / 2;
prev, next 前驱、后继 链表、DP状态 int next[maxn];
g 图 (Graph) 邻接表 vector<int> g[maxn];
vis 访问标记 (Visited) 图/树的遍历 bool vis[maxn];
dist 距离 (Distance) 最短路算法 int dist[maxn];
par 父节点 (Parent) 树、并查集 int par[maxn];
sz 大小 (Size) 子树大小/集合大小 int sz[maxn];
s, str 字符串 (String) 字符串处理 string s; cin >> s;
tmp 临时变量 (Temporary) 临时存储 int tmp = a; a = b; b = tmp;
h 头节点 (Head) 邻接表头数组 int h[maxn];
e, ne 边、下一条边 (Edge, Next) 邻接表存图 int e[maxm], ne[maxm];
w 权重 (Weight) 带权图的边权 int w[maxm];
st 状态/访问标记 (State) 状态压缩、访问标记 bool st[maxn];
p 素数/父节点 (Prime/Parent) 素数表、并查集 int p[maxn];
que 队列 (Queue) BFS 使用的队列 int que[maxn];
stk 栈 (Stack) 存储元素的栈 int stk[maxn];
fact 阶乘 (Factorial) 预处理阶乘 long long fact[maxn];
inv 逆元 (Inverse) 模逆元 long long inv[maxn];
low, dfn Low-link, Discovery Time Tarjan 算法 int low[maxn], dfn[maxn];
scc_cnt 强连通分量计数 Tarjan 算法 int scc_cnt;
id 标识符 (Identifier) 节点所属的连通块/SCC int id[maxn];
root, rt 根节点 (Root) 树的根 int root;
ch 孩子/字符 (Child/Character) 树的孩子、Trie int ch[maxn][26];
len 长度 (Length) 字符串/数组长度 int len = s.length();
op 操作 (Operation) 操作类型/次数 int op, x; cin >> op >> x;
val 值 (Value) 节点/元素的值 int val[maxn];
contrib 贡献 (Contribution) 贡献值计算 long long contrib[maxn];

使用建议

  • 保持一致:在一个项目中尽量保持变量命名风格的一致性。
  • 避免滥用:对于核心或复杂的逻辑,建议使用更有描述性的变量名。
  • 快速上手:熟悉这些常用名有助于更快地读懂他人的竞赛代码。