0
点赞
收藏
分享

微信扫一扫

(备忘) 算法竞赛常用宏定义

sullay 2022-03-25 阅读 68
#include <bits/stdc++.h>
#include <time.h>
using namespace std;
#define redir(i, o) { if (i) freopen("a.in", "r", stdin);if (o)freopen("a.out", "w", stdout);}
#define repr(i,a,b) for(int i = a;i < b;++i)
#define DEBUG "L= "<< setw(2)<< __LINE__ << ":  "
#ifdef DEBUG
#define print(a) cout<<DEBUG<<#a << ": " <<(a)<<endl
#define prin2(a, b) cout <<DEBUG<<":  "<< #a<<": "<< (a)<<" "<<#b<< ": "<<(b)<<endl
#define prinl(a) do{cout<<DEBUG<<endl;int s=min((int)a.size(),16);for(int i=0;i<s;i++)cout<<setw(4)<<i<<" \n"[i==s-1];int num=0;for(auto i:a){cout<<setw(4)<<i<<"\n "[bool(++num%s)];}cout<<endl;}while(0)
#define prinSq(a) do{cout<<"X:    ";for(auto i=0;i<a.size();i++){cout<<setw(4)<<i<<" ";}cout<<endl;for(auto i=0;i<a.size();i++){cout<<"Y="<<setw(2)<<i<<": ";for(auto i : a[i])cout<<setw(4)<<i<<" ";cout<<endl;}}while(0)
#define pTime(a) do{cout<<"\n\n";auto t=clock();a;cout<<DEBUG<<"测试结束,消耗"<<clock()-t<<"微秒\n";}while(0)
#else
#define endl "\n"
#define print(a)
#define prin2(a, b)
#define printL(a)
#define prinSq(a)
#define pTime(a) a;
#endif
template<typename T>vector<vector<T>>makeSq(int y, int x, T *init) {
	auto ans = vector<vector<T>>(y, vector<T>(x, *init)); delete init; return ans;
}

自定义print函数, redir定输入函数, prinl打印列表, prinSq打印矩阵, makeSq生成二维矩阵

使用示例:



int main() {
	int sxh = 705;
    print(sxh);
    auto sxhSq = makeSq(10,10,new (float));
    prinSq(sxhSq);
    pTime(auto n = (int)1e5;while(n--););
}
举报

相关推荐

0 条评论