常用变量名
常用变量名速查表
在算法竞赛(尤其是 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]; |
使用建议
- 保持一致:在一个项目中尽量保持变量命名风格的一致性。
- 避免滥用:对于核心或复杂的逻辑,建议使用更有描述性的变量名。
- 快速上手:熟悉这些常用名有助于更快地读懂他人的竞赛代码。