ACM(ACM International Collegiate Programming Contest)基础代码通常指用于竞赛中快速开始解
题的模板代码。这些基础代码通常包括以下部分:
1. 导入标准库和命名空间:例如导入 iostream、cstdio 等,以及 using namespace std;。
cpp
#include <iostream>#include <cstdio>#include <cmath>using namespace std;
1. 常用宏定义:例如定义无穷大、最大最小值等。
cpp
const int INF = 0x3f3f3f3f; // 无穷大#define MAX(a, b) ((a) > (b) ? (a) : (b))#define
MIN(a, b) ((a) < (b) ? (a) : (b))
1. 输入输出优化宏定义:加快输入输出速度。
cpp
#define FAST_IO ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
1. 常用数据类型定义:例如定义 typedef long long ll;。
cpp
typedef long long ll;
1. 常用数据结构:例如定义 struct 或 class。
cpp
struct Point {
int x, y;
};
1. 常用算法函数:例如快速幂、求组合数等。
cpp
// 快速幂 ll power(ll base, ll exp) {
ll result = 1;
while (exp > 0) {
if (exp % 2 == 1) // 如果 exp 是奇数
result = result * base;
base = base * base;
exp = exp / 2;
}
return result;
}
// 求组合数 C(n, k)ll comb(int n, int k) {
if (k > n - k)
k = n - k; // C(n, k) = C(n, n-k)
ll res = 1;
for (int i = 0; i < k; ++i) {
res = res * (n - i);
res = res / (i + 1);
}
return res;
}
1. 主函数:通常包括读取输入、处理数据、调用算法函数和输出结果。