代码模板
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int ui;
#define rep(i, l, r) for(int i = l; i <= r; i++)
#define per(i, l, r) for(int i = l; i >= r; i--)
inline ll read(){
ll res = 0, flg = 1;
char c = getchar();
for(; c > '9' || c < '0'; c = getchar()) if(c == '-') flg = -flg;
for(; c >= '0' && c <= '9'; c = getchar()) res = res * 10 + c - '0';
return res * flg;
}
inline void write(ll x, char c = '\n'){
if(x < 0) putchar('-'), x = -x;
static int sta[35]; int top = 0;
do { sta[top++] = x % 10, x /= 10; } while (x);
while (top) putchar(sta[--top] + 48);
putchar(c);
}
void __deb__(const char *s) { cerr << '\n'; }
template <typename T, typename... Ts>
void __deb__(const char *s, T v, Ts... vs){
const char *c = strchr(s, ',');
string name(s, c ? c - s : strlen(s));
if(std::is_floating_point<T>::value) {
cerr << name << " : " << fixed << setprecision(10) << v;
} else {
cerr << name << " : " << v;
}
if(c) { cerr << " | "; __deb__(c + 1, vs...); }
else cerr << '\n';
}
#define deb(...) __deb__(#__VA_ARGS__, __VA_ARGS__)
// #define FILE_NAME
void solve_test_case(){
}
signed main(){
#ifndef LOCAL_TEST
#ifdef FILE_NAME
freopen(FILE_NAME ".in", "r", stdin);
freopen(FILE_NAME ".out", "w", stdout);
#endif
#endif
#ifdef LOCAL_TEST
#endif
int Test_case_num = 1;
while(Test_case_num--) solve_test_case();
return 0;
}
用法说明
solve_test_case()
这里是处理一个测试点的函数,在单测时相当于 main() 函数,多测时注意将 main() 中的 int Test_case_num = 1; 改为 int Test_case_num = read();,即读入测试点个数。
rep(), per()
rep(i, l, r) 等价于 for(int i = l; i <= r; i++)
per(i, l, r) 等价于 for(int i = l; i >= r; i--)
read(), write()
read() 是快速整数读入,返回 long long 类型整数,可带 - 号,忽略非数字字符。
write(num, ch) 是快速整数输出,ch 是结尾字符,不填充时默认 '\n'。
deb()
deb() 是快捷调试宏定义。
一次可以输入多个表达式,用 ',' 分隔,但注意函数表达式如 deb(calc(x, y), z) 就不行。
输出到标准错误流中(stderr),输出格式如下:
int a = 1;
long double b = 114514.1919810;
string c = "Hello, world!";
deb(a, b, c);
的结果是:
a : 1 | b : 114514.1919810000 | c : Hello, world!
浮点数默认保留 10 位小数,且不支持不默认。
LOCAL_TEST
本地测试时请在编译命令里加入 -DLOCAL_TEST,可以触发 #ifdef LOCAL_TEST ... #endif 内的内容。
对于提交代码,则会执行 #ifndef LOCAL_TEST ... #endif 内的内容。
FILE_NAME
文件读写功能仅在非本地时应用。本地文件读写测试请另外编写。目的是方便本地文件读写测试且不妨碍原题目测试(因为一般文件名不同)。
FILE_NAME 的宏定义在 solve_test_case() 上方,意为文件读写时,输入和输出文件文件名,一般是题目英文代号。
在填写 FILE_NAME 时不需要带双引号。
当不需要读入读写时,就注释掉 #define FILE_NAME ...,即不会触发文件读写。

浙公网安备 33010602011771号