Skip to content
算法模板

Created by open17Created by open17 2024

说明

目前很多模板是东拼西凑网上的和从我的上古代码/笔记啥的拿出来的,有待统一化与完善

注意事项

  • 仔细看题,不要看漏看错看反
  • 注意条件与数据,思考时间复杂度与猜测算法
  • 尝试转化问题为相似已知问题
  • 尝试多手玩/打表,找性质与规律
  • 没思路时,多想什么题目条件没用上
  • 尝试构造一些常见的性质,比如单调性
  • 也从暴力枚举开始思考优化
  • 或者正难则反
  • 或者从简化版的题目开始思考
  • 或者思考贡献

火车头

cpp

#include <bits/stdc++.h>
using namespace std;


#define int long long


#define all(x) (x).begin(), x.end()
#define endl '\n'  // 避免刷新缓冲区
#define inf32 0x3f3f3f3f
#define inf64 1LL << 60
#define max32 INT_MAX
#define max64 LONG_LONG_MAX


// 类型别名
using i64 = long long;
using u64 = unsigned long long;
using i128 = __int128;
using pii = std::pair<int, int>;

// 常规输出
template <typename T> void print(const T &t) { std::cout << t << endl; }
template <typename T, typename... Args> void print(const T &t, const Args... args)
{
    std::cout << t << ' ';
    print(args...);
}

i64 ceilDiv(i64 n, i64 m) {
    if (n >= 0) {
        return (n + m - 1) / m;
    } else {
        return n / m;
    }
}
 
i64 floorDiv(i64 n, i64 m) {
    if (n >= 0) {
        return n / m;
    } else {
        return (n - m + 1) / m;
    }
}

template<class T>
void chmax(T &a, T b) {
    if (a < b) {
        a = b;
    }
}

template <class T>
void chmin(T &a, T b)
{
    if (a > b)
    {
        a = b;
    }
}

inline int read()
{
    int x = 0, f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9')
    {
        if (ch == '-')
            f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9')
    {
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}