首页 > 其他分享 >模板

模板

时间:2022-12-24 09:44:26浏览次数:37  
标签:return int res ll vector 模板 define

模板

#include <bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define eb emplace_back
typedef long long ll;
using namespace std;

int main() {
#ifdef DEBUG
	freopen("1.in", "r", stdin);
#endif
	ios::sync_with_stdio(0);
	cin.tie(0);

	return 0;
}

快读

const int Bsiz = 1 << 20;
char BB[Bsiz], *SB = BB, *TB = BB;
char gc() {
	if(SB != TB) {
		return *SB++;
	}
	SB = BB;
	TB = SB + fread(BB, 1, Bsiz, stdin);
	if(SB == TB) {
		return EOF;
	}
	return *SB++;
}
template <typename T> void read(T &x) {
	T f = 1;
	char ch = gc();
	x = 0;
	while(!isdigit(ch)) {
		if(ch == '-') {
			f = -1;
		}
		ch = gc();
	}
	while(isdigit(ch)) {
		x = x * 10 + (ch & 15);
		ch = gc();
	}
	x *= f;
}

数据生成器

#include <bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
typedef long long ll;
using namespace std;
namespace DM {
    mt19937_64 rnd(time(NULL));
    ll number(ll l, ll r) {
        uniform_int_distribution<ll> dis(l, r);
        return dis(rnd);
    }
    pair<ll, ll> range(ll l, ll r) {
        uniform_int_distribution<ll> dis(l, r);
        ll p = dis(rnd), q = dis(rnd);
        if(p > q) {
            swap(p, q);
        }
        return mp(p, q);
    }
    vector<int> permutation(int n) {
        vector<int> res(n);
        for(int i = 0; i < n; i++) {
            res[i] = i + 1;
        }
        shuffle(res.begin(), res.end(), rnd);
        return res;
    }
    /*
    array
    value range : [l, r]
    */
    vector<ll> array(int n, ll l, ll r) {
        vector<ll> res(n);
        for(int i = 0; i < n; i++) {
            res[i] = number(l, r);
        }
        return res;
    }
    /*
    tree
    root : random
    */
    vector<pair<int, int> > tree(int n) {
        vector<pair<int, int> > res;
        for(int i = 2; i <= n; i++) {
            res.pb(mp(number(1, i - 1), i));
        }
        vector<int> p = permutation(n);
        for(int i = 0; i < n - 1; i++) {
            res[i].fi = p[res[i].fi - 1];
            res[i].se = p[res[i].se - 1];
        }
        return res;
    }
    /*
    Binary Tree
    root : 1
    */
    vector<int> binary_tree(int n) {
        vector<int> fa, deg;
        fa.resize(n), deg.resize(n);
        for(int i = 2; i <= n; i++) {
            while(1) {
                int u = number(1, i - 1);
                if(deg[u] < 2) {
                    deg[u]++;
                    fa[i - 1] = u;
                    break;
                }
            }
        }
        return fa;
    }
    /*
    DAG / Undirected Graph
    */
    vector<pair<int, int> > graph(int n, int m) {
        vector<pair<int, int> > res;
        map<pair<int, int>, bool> vis;
        for(int i = 2; i <= n; i++) {
            while(1) {
                pair<int, int> e = mp(number(1, i - 1), i);
                if(vis[e]) {
                    continue;
                }
                res.pb(e), vis[e] = 1;
                break;
            }
        }
        for(int i = 1; i <= m - n + 1; i++) {
            while(1) {
                pair<int, int> e = range(1, n);
                if(vis[e] || e.fi == e.se) {
                    continue;
                }
                res.pb(e), vis[e] = 1;
                break;
            }
        }
        vector<int> p = permutation(n);
        for(int i = 0; i < m; i++) {
            res[i].fi = p[res[i].fi - 1];
            res[i].se = p[res[i].se - 1];
        }
        return res;
    }
}
namespace output {
    void number1(ll l, ll r) {
        ll x = DM::number(l, r);
        cout << x << ' ';
    }
    void number2(ll l, ll r) {
        ll x = DM::number(l, r);
        cout << x << '\n';
    }
    void range(ll l, ll r) {
        pair<ll, ll> x = DM::range(l, r);
        cout << x.fi << ' ' << x.se << '\n';
    }
    void tree(int n) {
        vector<pair<int, int> > x = DM::tree(n);
        for(int i = 0; i < n - 1; i++) {
            cout << x[i].fi << ' ' << x[i].se << '\n';
        }
    }
    void graph(int n, int m) {
        vector<pair<int, int> > x = DM::graph(n, m);
        for(int i = 0; i < m; i++) {
            cout << x[i].fi << ' ' << x[i].se << '\n';
        }
    }
}

int main() {
	freopen("1.in", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	return 0;
}

标签:return,int,res,ll,vector,模板,define
From: https://www.cnblogs.com/yanchengzhi/p/17002163.html

相关文章

  • 模板
    模板#include<bits/stdc++.h>#definefifirst#definesesecond#definempmake_pair#definepbpush_back#defineebemplace_backtypedeflonglongll;using......
  • 计算几何模板
    庆祝该板子大概20k了/se!!!另外新增了已验证的动态半平面交(肝了4天啊(悲。#include<bits/stdc++.h>template<typenameT>inlinevoidckmax(T&x,Ty){x=x>y......
  • Flask - jinjia2模板
    一、前言参考https://www.cnblogs.com/poloyy/p/14999797.html没有前端基础,看的有些些复杂,只了解简单用法就行,后面做网站如果是用到这模板的话再深入学习吧。二、目录结......
  • 模板方法模式javac++
    软件设计                 石家庄铁道大学信息学院 实验24:模板方法模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解模板方法......
  • 数据解析、正则解析、bs4解析、定位标签的操作、xpath解析、爬PM2.5历史数据、爬三国
    -数据解析-数据解析的作用:-可以帮助我们实现聚焦爬虫-数据解析的实现方式:-正则-bs4-xpath-pyquery-数据解......
  • 排序算法模板(更新中)
    快速排序#include<bits/stdc++.h>usingnamespacestd;constintN=1e6+10;intn;intq[N];voidposition(intq[],intl,intr){if(l>=r)ret......
  • 2023年元旦手抄报模板怎么打印?
    进入2022年的12月底,相信有很多人都在期待2023年的第一个法定节假日——元旦。此外也会有很多老师要求学生完成一份特殊的作业,这就是画一张元旦节手抄报。有一些家长就要开......
  • BZOJ 3252 攻略(长链剖分模板 链的常用性质 贪心)
    BZOJ3252攻略​ 给定一棵带边权的树,选择k个叶子结点,使这些叶子结点与根节点相连,形成k条路径。输出被路径覆盖的所有边的边权和的最大值(同一条边若被重复覆盖只算一......
  • P3369 【模板】普通平衡树
    题目链接题目要求:插入数据,删除数据,查询数的排名,查询排名为x的数,找前驱,找后继旋转操作,左旋和右旋,旋转$x$,旋转操作一定要符合先序遍历前后一致voidrotate(intx){ ......
  • 哈啰出行高质量故障复盘法:“3+5+3”(附模板)
    #一分钟精华速览#故障复盘指的是及时把过去发生的错误,最大程度转化为未来可以规避的办法,其核心是不断减少失败因子繁衍的温床,将它们牢牢地掌控在不至于引发危机的范围之......