工具

VsCode 缺省源
{
	"FRZ": {
	"prefix": "FRZ",
	"body": [
		"#ifdef ONLINE_JUDGE",
		"#else",
		"#define FRZ_29",
		"#endif",
		"",
		"#include <bits/stdc++.h>",
		"",
		"using namespace std;",
		"",
		"using i64 = long long;",
		"using u64 = unsigned long long;",
		"using u32 = unsigned;",
		"using i128 = __int128;",
		"",
		"#define PRINT(x) cout << #x << \" = \" << x << \"\\n\"",
		"#define LF(i, l, r) for (int i = (l); i <= (r); i++)",
		"#define RF(i, r, l) for (int i = (r); i >= (l); i--)",
		"",
		"int main() {",
		"#ifdef FRZ_29",
		"  freopen(\"code.in\", \"r\", stdin);",
		"  freopen(\"code.out\", \"w\", stdout);",
		"#endif",
		"",
		"  ios::sync_with_stdio(0);",
		"  cin.tie(0), cout.tie(0);",
		"",
		"  ",
		"  return 0;",
		"}",
		"",
		"// START AT ${CURRENT_YEAR} / ${CURRENT_MONTH} / ${CURRENT_DATE} ${CURRENT_HOUR} : ${CURRENT_MINUTE} : ${CURRENT_SECOND}"
	],
	"description": "FRZ"
	}
}
对拍
#include <iostream>
#include <cstdio>
#include <ctime>

using namespace std;

int main() {
  int id = 0;
  while (true) {
    system("random.exe");
    time_t st = clock();
    system("A.exe");
    time_t ed = clock();
    system("bf.exe");

    if (system("fc bf.out A.out")) {
      printf("Case:%d, Wrong Answer, time is %.lfs\n", ++id, ed - st);
      return 0;
    } else {
      printf("Case:%d, Accept Answer, time is %.lfs\n", ++id, ed - st);
    }
  }
}
数据生成基础
#include <bits/stdc++.h>

using namespace std;

int random(int n) { // 生成 [1, n] 中的数。
  return (rand() * rand() % n) + 1;
}

int random_R(int n) { // 生成 [-n, n] 中的数
  return (rand() * rand() % (2 * n) + 1) - n;
}

int main() {
  freopen("z_example.in", "w", stdout);
  srand(chrono::system_clock::now().time_since_epoch().count()); // 毫秒级别的随机生成种子
  return 0;
}
生成一颗以 1 为根,父节点比子节点小的树
#include <bits/stdc++.h>
 
using namespace std;
 
int random(int n) { // 生成 [1, n] 中的数。
    return (rand() * rand() % n) + 1;
}
 
int random_R(int n) { // 生成 [-n, n] 中的数
    return ((long long)rand() * rand() % (2 * n) + 1) - n;
}

int main() {
    freopen("z_example.in", "w", stdout);
    srand(chrono::system_clock::now().time_since_epoch().count()); // 毫秒级别的随机生成种子
    int n = random(100);
    printf("%d\n", n);

    // 点权
    // for (int i = 1; i <= n; i++) printf("%d ", random_R(1000));
    // puts("");
    for (int i = 2; i <= n; i++) {
        int fa = random(i - 1);
        printf("%d %d\n", fa, i);
    }

    return 0;
}
代码模版
  • FHQ Treap基础
    struct FHQ_Treap {
        int rd[N], ls[N], rs[N], val[N], sz[N], node, R;
        mt19937 rnd;
    
        FHQ_Treap() { rnd.seed(chrono::system_clock::now().time_since_epoch().count()); }
    
        int nd(int v) {
            int x = ++node;
            return rd[x] = rand(), sz[x] = 1, val[x] = v, x;
        }
    
        void up(int rt) {
            sz[rt] = sz[ls[rt]] + sz[rs[rt]] + 1;
        }
    
        int mer(int p, int q) {
            if (!p || !q) return p | q;
            if (rd[p] > rd[q]) return rs[p] = mer(rs[p], q), up(p), p;
            else return ls[q] = mer(p, ls[q]), up(q), q;
        }
    
        void spl(int rt, int v, int &p, int &q) {
            if (!rt) return p = q = 0, void();
            if (val[rt] <= v) spl(rs[rt], v, rs[p = rt], q), up(p);
            else spl(ls[rt], v, p, ls[q = rt]), up(q);
        }
    } t;
    
  • 线段树基础
    struct Segment {
        #define ls (rt << 1)
        #define rs (rt << 1 | 1)
        #define mid (l + r >> 1)
    
        int sum[N << 2], tag[N << 2], a[N];
    
        void up(int rt) {
            sum[rt] = sum[ls] + sum[rs];
        }
    
        void down(int rt, int l, int r) {
            sum[ls] += tag[rt] * (mid - l + 1);
            sum[rs] += tag[rt] * (r - mid);
            tag[ls] += tag[rt]; tag[rs] += tag[rt];
            tag[rt] = 0;
        }
    
        void build(int rt, int l, int r) {
            if (l == r) {
                sum[rt] = a[l];
                return;
            }
    
            build(ls, l, mid); build(rs, mid + 1, r);
            up(rt);
        }
    
        void upd(int rt, int l, int r, int L, int R, int v) {
            lf (L <= l && r <= R) {
                sum[rt] += v * (r - l + 1);
                tag[rt] += v; return;
            }
    
            down(rt, l, r);
            if (mid >= l) upd(ls, l, mid, L, R, v);
            if (mid < r) upd(rs, mid + 1, r, L, R, v);
            up(rt);   
        }
    
        int query(int rt, int l, int r, int L, int R) {
            if (L <= l && r <= R) return sum[rt];
            down(rt, l, r);
            int ans = 0;
            if (mid <= l) ans += query(ls, l, mid, L, R);
            if (mid > r) ans += query(rs, mid + 1, r, L, R);
            return ans;
        }
    } t;
    
  • 最大流
    int head[N], ver[M << 1], edge[M << 1], Next[M << 1], tot = 1;
    int d[N], now[N];
    int n, m, s, t;
    queue<int> que;
    
    void add(int u, int v, int w) {
      ver[++tot] = v, edge[tot] = w;
      Next[tot] = head[u], head[u] = tot;
    }
    
    bool bfs() {
      memset(d, 0, sizeof(d));
      while (que.size()) que.pop();
      d[s] = 1, que.push(s), now[s] = head[s];
    
      while (que.size()) {
        int u = que.front(); que.pop();
    
        for (int i = head[u]; i; i = Next[i]) {
          if (edge[i] && !d[ver[i]]) {
            d[ver[i]] = d[u] + 1;
            now[ver[i]] = head[ver[i]];
            que.push(ver[i]);
            if (ver[i] == t) return 1;
          }
        }
      }
    
      return 0;
    }
    
    int dfs(int u, int f) {
      if (u == t || !f) return f;
      int ans = 0;
    
      for (int &i = now[u]; i; i = Next[i]) {
        if (edge[i] && d[ver[i]] == d[u] + 1) {
          int k = dfs(ver[i], min(f, edge[i]));
          if (!k) d[ver[i]] = 0;
          edge[i] -= k, edge[i ^ 1] += k;
          ans += k, f -= k;
          if (f <= 0) break;
        }
      }
    
      return ans;
    }
    
    int dinic() {
      int ans = 0;
      while (bfs()) ans += dfs(s, inf);
      return ans;
    }
    
FastIO

void read() {}
template<typename T, typename... U> void read(T &x, U&...arg) {
  x = 0; int f = 1; char ch = getchar();
  while (ch > '9' || ch < '0') { if (ch == '-') f = -1; ch = getchar(); }
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  x *= f; read(arg...);
}

void write() {}
template<typename T> void write(T x) {
  if (x < 0) { putchar('-'), x = -x; }
  if (x > 9) write(x / 10);
  putchar(x % 10 + '0');
}

void lwrite() {}
template<typename T, typename... U> void lwrite(T x, U ...arg) {
  write(x); putchar(' '); lwrite(arg...);
}

void nwrite() {}
template<typename T, typename... U> void nwrite(T x, U ...arg) {
  write(x); puts(""); nwrite(arg...);
}
posted @   FRZ_29  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示