毒瘤header(代码里的宏和函数看不懂可以来这里找)

实际上大多都是从别人代码里偷来的

#include <bits/stdc++.h>
using namespace std;
typedef double lf;
typedef long long ll;
typedef long double llf;
typedef vector<int> vint;
typedef unsigned int uint;
typedef pair<int, int> pii;
typedef unsigned long long ull;

#define xx first
#define yy second
#define pb push_back
#define mp make_pair
#define mid ((l+r)>>1)
#define all(x) x.begin(), x.end()
#if __cplusplus <= 201103L
#define lop0(i,b) for (register int i = 0, i##end = (b); i < i##end; ++i)
#define lop1(i,b) for (register int i = 1, i##end = (b); i <= i##end; ++i)
#define dlop(i,a,b) for (register int i = (a), i##end = (b); i >= i##end; --i)
#define lop(i,a,b) for (register int i = (a), i##end = (b); i <= i##end; ++i)
#define dlop0(i,b) for (register int i = (b)-1; i >= 0; --i)
#define dlop1(i,b) for (register int i = (b); i >= 1; --i)
#else
#define lop0(i,b) for (int i = 0, i##end = (b); i < i##end; ++i)
#define lop1(i,b) for (int i = 1, i##end = (b); i <= i##end; ++i)
#define dlop(i,a,b) for (int i = (a), i##end = (b); i >= i##end; --i)
#define lop(i,a,b) for (int i = (a), i##end = (b); i <= i##end; ++i)
#define dlop0(i,b) for (int i = (b)-1; i >= 0; --i)
#define dlop1(i,b) for (int i = (b); i >= 1; --i)
#endif
#if __cplusplus >= 201103L
mt19937 Rand(19260817);
#define mt make_tuple
#else
uint Rand() {
  static int s = 0;
  if (!s) srand(19260817), s = 1;
  return rand();
}
#endif
#define trav(it, a) for (__typeof((a).end())it = (a).begin(); it != (a).end(); ++it)
#define dtrav(it, a) for (__typeof((a).rend())it = (a).rbegin(); it != (a).rend(); ++it)
#define trav1(it, a) for (__typeof((a).end())it = (a).begin(), it##1; it != (a).end(); it = it1)
#define dtrav1(it, a) for (__typeof((a).rend())it = (a).rbegin(), it##1; it != (a).rend(); it = it1)

const int mod = 998244353, MAXN = 1e5 + 7, inft = 1e9 + 7;
const ll infl = llf(1e18) + 1;
const lf eps = 1e-7;
template<typename T> inline T sqr(T x) {
    return x * x;
}
template<typename A, typename B> inline A _gcd(A a, B b) {
    A t;
    if (a < b) swap(a, b);
    if (!b) return a;
    while (t = a % b) a = b, b = t;
    return b;
}
template<typename A, typename B> inline ll _lcm(A a, B b) {
    return a / gcd(a, b) * 1ll * b;
}
template<typename T> inline T abs(T x) {
    return x >= 0 ? x : -x;
}
template<typename A, typename B> inline ll mul(A a, B b, ll mod) {
    if (b < 0) b = -b, a = -a;
    ll ret;
    for (ret = 0; b; b >>= 1) {
        if (b & 1) ret = (ret + a) % mod;
        a = (a + a) % mod;
    }
    return ret % mod;
}
template<typename A, typename B> inline A Pow1(A a, B b, int mod) {
    A ret;
    for (ret = 1; b; b >>= 1) {
        if (b & 1) ret = ret * 1ll * a % mod;
        a = a * 1ll * a % mod;
    }
    return ret % mod;
}
template<typename A, typename B> inline ll Pow(A a, B b, ll mod) {
    assert(b >= 0);
    a %= mod;
    if (mod <= 2e9) return Pow1(a, b, mod);
    ll ret;
    for (ret = 1; b; b >>= 1) {
        if (b & 1) ret = mul(ret, a, mod);
        a = mul(a, a, mod);
    }
    return ret % mod;
}
template<typename A, typename B> inline A max(A a, B b) {
    return a > b ? a : b;
}
template<typename A, typename B> inline A min(A a, B b) {
    return a < b ? a : b;
}
template<typename A, typename B> inline void chmax(A &x, B y) {
    if (x < y) x = y;
}
template<typename A, typename B> inline void chmin(A &x, B y) {
    if (x > y) x = y;
}
template<typename A, typename B> inline void amod(A &x, B y, int mod) {
    x += y;
    while (x < 0) x += mod;
    while (x > mod) x -= mod;
}
template<typename A> inline void Mod(A &x, int mod) {
    while (x < 0) x += mod;
    while (x > mod) x -= mod;
}

int main() {

#ifdef QvvQ
    fprintf(stderr, "\ntime:%.5fms", clock() * 1.0 / CLOCKS_PER_SEC * 1000);
#endif
    return 0;
}

原文地址:https://www.cnblogs.com/storz/p/10198970.html

时间: 2024-10-22 12:32:39

毒瘤header(代码里的宏和函数看不懂可以来这里找)的相关文章

iOS 使用宏定义函数和代码块

iOS使用宏定义函数和代码块 今天在开发过程中碰到一个问题:就是父类中要向外发送通知,然后子类中或者其他类中来接收它.当然一般是把它写到类方法中去,但是有个问题,就是如果调用的类不是它的子类,就不能直接调用,当然也可以采用静态方法实现,我这里主要是想用宏定义来实现,下面我分别介绍使用宏定义函数和定义代码块的方式进行,废话不多说了,直接上代码: 使用宏定义函数实现 //定义 #define SendNotification @"SendNotification" #define send

宏和函数的区别

先说宏和函数的区别: 1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型.2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的.3. 宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的时间,而函数占用的是执行时的时间.4. 宏的参数是不占内存空间的,因为只是做字符串的替换,而函数调用时的参数传

node源码详解(四) —— js代码如何调用C++的函数

声明:转载请保留声明头部并标明转载.并私信告知作者.原文:http://www.cnblogs.com/papertree/p/5285705.html 上面讲到node调用Script::Compile()和Script::Run()解析执行app.js,并把io操作和callback保存到default_loop_struct,那么app.js里面js代码如何调用C++的函数呢? 在4.2节进行解释,先在4.1节来点知识预热. 4.1 V8运行js代码的基础知识 —— V8的上下文 来看看g

c语言中,宏和函数的区别

一.代码长度:宏是完全替换,插入到程序里使得代码变长: 函数代码是只出现在一个地方,使用时则去那里调用. 二.执行速度:宏更快一些,因为在预编译阶段都已完成: 函数则慢一点,因为需要调用以及返回(压栈/出栈)额外时间. 三.操作符优先级:宏有时要少加括号而导致计算逻辑出错: 函数最后只将值返回来,结果容易预测. 四.参数求值:宏每次都要计算: 函数只需要计算一次,之后多次调用并不会导致多次求值而出错. 五.参数类型:宏不关心类型,只要参数操作合法就可以: 函数类型要一致,不同类型则需要不同函数.

C语言宏定义和宏定义函数

要写好C语言,漂亮的宏定义是非常重要的.宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等. 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义.那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍. 我们来看一个例子,比较两个数或者表达式大小,首先我们把它写成宏定义: #define MAX( a, b) ( (a) > (b) (a) : (b) ) 其次,把它用函数来实现: int max( int a, int b)

代码里语句的顺序狠重要。。。

有时候你千调万调,明明代码的执行逻辑没错啊,明明我得到了数据啊,为什么调试的时候eclipse告诉我空值嘛,有时候很有可能是你的代码的位置不对,或者你放入了一个错误的代码,影响了它后面代码的正常执行... 最后的结果是逗比可笑的,因为你语句放错了位置... 例如:1.我在加载评论内容的时候,首先获取edittext的内容,然后传给服务器,但是调试发现,服务器获取的是空值...  因为我getText().toString()的时候,这句话写在了另一个函数里面,及时你把得到的text声明为fina

提高代码质量:如何编写函数

阅读目录 命名 函数参数 编写函数体 总结 函数是实现程序功能的最基本单位,每一个程序都是由一个个最基本的函数构成的.写好一个函数是提高程序代码质量最关键的一步.本文就函数的编写,从函数命名,代码分布,技巧等方面入手,谈谈如何写好一个可读性高.易维护,易测试的函数. 回到顶部 命名 首先从命名说起,命名是提高可读性的第一步.如何为变量和函数命名一直是开发者心中的痛点之一,对于母语非英语的我们来说,更是难上加难.下面我来说说如何为函数命名的一些想法和感受: 采用统一的命名规则 在谈及如何为函数取一

C语言代码里不能用goto?

当我学C语言时,老师整天告诉我:"不要使用goto, 这是一个坏习惯, 这种写法很烂,而且很危险!"等等. 但是为什么那么多内核程序员那么喜欢用goto呢? 在这段linux内核 https://github.com/torvalds/linux/blob/master/kernel/sched/clock.c  代码里,我觉得可以用简单的一个while替换掉,如: while(condition) { } //或 do { }while(condition); 注:这段代码来自tor

【笨木头Unity】入门之旅009:Demo之四处找死(四)_在代码里操作物体

有没有发现越往后写,旁白出现的次数越少? 是的,最近公司出了点小问题,思绪就变得沉重了一些,思绪一沉重,我的精神分裂就很难发作. 不唠叨了,这次我们来试试在代码里操作物体吧,很简单很简单的. 笨木头花心贡献,啥?花心?不,是用心. 转载请注明,原文地址:http://www.benmutou.com/archives/2176 文章来源:笨木头与游戏开发 1.找遍全世界,只为了发现你--FindGameObjectWithTag 还记得很早之前我们介绍的Tag吗?我知道你们肯定不记得的. 先给我