welcome

用来写模拟赛、非洛谷(及其RemoteJudge)题的题解

学习笔记、游记等见 洛谷博客

密码不用猜,有的可以私我,有的退役后应该会放出来


一些记号:划掉代表自己做出来的,斜体代表口胡


头文件(其他代码中省略)

注: 需要 \(8\) M 空间

#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std; using namespace __gnu_pbds; using namespace __gnu_cxx;
#define For(i,x,y,...) for(int i=x,##__VA_ARGS__;i<=(y);++i)
#define rFor(i,x,y,...) for(int i=x,##__VA_ARGS__;i>=(y);--i)
#define Rep(i,x,y,...) for(int i=x,##__VA_ARGS__;i<(y);++i)
#define mem(a,x,n) memset(a,x,sizeof(*a)*((n)+1))
#define pb emplace_back
#define sz(a) int(a.size())
#define all(a) a.begin(),a.end()
#define MT make_tuple
#define MP make_pair
#define fi first
#define se second
#define lwb lower_bound
#define upb upper_bound
#ifdef FS
	#define ast(x) assert(x)
#else
	#define ast(x) void()
#endif
typedef long long LL; typedef unsigned long long uLL;
typedef vector<int> Vi; typedef pair<int,int> Pii;
auto ckmax=[](auto &x,auto y) { return x<y ? x=y,true : false; };
auto ckmin=[](auto &x,auto y) { return y<x ? x=y,true : false; };
sfmt19937 mt(chrono::steady_clock::now().time_since_epoch().count());
int rnd(int l,int r) { return uniform_int_distribution<>(l,r)(mt); }
#define endl '\n'
namespace IO { const int L = 1<<22; char a[L],*l=a,*r=a,b[L],*p=b;
auto gc=[]() { if(l==r)r=(l=a)+fread(a,1,L,stdin);return l==r?EOF:*l++; };
auto pc=[](char x) { if(p-b==L)fwrite(b,1,L,stdout),p=b;*p++=x; };
struct IO {
	~IO() { fwrite(b,1,p-b,stdout); }
	IO& operator >> (char &x) { while(isspace(x=gc())); return *this; }
	IO& operator >> (char *s) {
		while(isspace(*s=gc())); while(isgraph(*++s=gc()));
		return *s=0, *this;
	}
	template<typename T>IO& operator >> (T &x) {
		x=0;bool f=1;char c;while(!isdigit(c=gc()))if(c=='-')f=0;
		if(f)for(;isdigit(c);c=gc())x=x*10+c-48;
		else for(;isdigit(c);c=gc())x=x*10-c+48;
		return *this;
	}
	IO& operator << (char x) { return pc(x), *this; }
	IO& operator << (char *s) { while( *s ) pc(*s++); return *this; }
	IO& operator << (const char *s) { while( *s ) pc(*s++); return *this; }
	template<typename T>IO& operator << (T x) {
		if(!x)pc(48);
		else{static char s[44];char *t=s;if(x<0)pc('-'),*t++=-(x%10),x=-x/10;
		for(;x;x/=10)*t++=x%10;while(s!=t)pc(*--t|48);}
		return *this;
	}
} io; } using IO::io;
#define getchar() IO::gc()
#define putchar(x) IO::pc(x)
template<typename T=int>T read() { T x; io>>x; return x; }
const int mod = 998244353, inf = 0x3f3f3f3f;
struct mint {
	int x; mint(int x=0):x(x<0?x+mod:x<mod?x:x-mod){}
	mint(LL y) { y%=mod, x=y<0?y+mod:y; }
	mint& operator += (const mint &y) { x=x+y.x<mod?x+y.x:x+y.x-mod; return *this; }
	mint& operator -= (const mint &y) { x=x-y.x<0?x-y.x+mod:x-y.x; return *this; }
	mint& operator *= (const mint &y) { x=1ll*x*y.x%mod; return *this; }
	mint& operator /= (const mint &y) { return *this*=y^mod-2; }
	mint& operator ^= (LL y)
		{ mint x=*this,z(1);for(;y;y>>=1,x*=x)if(y&1)z*=x;return *this=z; }
	friend mint operator + (mint a,const mint &b) { return a+=b; }
	friend mint operator - (mint a,const mint &b) { return a-=b; }
	friend mint operator * (mint a,const mint &b) { return a*=b; }
	friend mint operator / (mint a,const mint &b) { return a/=b; }
	friend mint operator ^ (mint a,LL b) { return a^=b; }
	mint operator - () const { return x?mod-x:0; }
};	mint Pow(mint x,LL y=mod-2) { return x^=y; }



signed main() {
#ifdef FS
	freopen("in","r",stdin);// freopen("out","w",stdout);
#endif
	
	return 0;
}

upd:
2021.5.24: PB 改为 pb
2021.5.27: 增加 FF
2021.6.3: 增加 Gor
2021.6.7: push_back 改为 emplace_backGor 改为 Jor
2021.6.18: mem(a,x) 改为 mem(a,x,n)
2021.6.19: Jor 改为 rForfreopen 增加文件名 a
2021.7.8:getchar 改为 getc
2021.7.14: 增加 write
2021.7.18: ioclear 改为 iocl
2021.8.1: getc 改为 getcharputc 改为putchar
2021.8.6 增加 ckmax,ckmin
2021.8.21 删除 FF,增加 VI,略调码风
2021.9.2 修改 buf,pbuf 大小
2021.9.6 修改 For,rFor
2021.10.6 增加 Rep
2021.10.10 增加 MTiocl() 改为 ocl()
2021.10.11 增加 all
2021.10.17 修改 read(注意 double 的精度)
2021.10.20 修改 ckmax,ckmin
2021.10.25 修改 buf,pbuf 大小,增加 LLL
2021.10.31 注释 LLL__int128 在 CF 上会 CE)
2021.11.8 Repint i 改为 auto i< 改为 !=,删除 LLL
2021.11.12 增加 pbds 相关头文件和命名空间,Rep 中改回 int i, <
2021.11.15 删除 long doube(LD)
2021.11.29 增加 __gnu_pbds::priority_queue
2021.12.7 增加 complex<double>,mod,ckadd,ckdel,Pow
2021.12.8 增加 sz
2021.12.9 增加 #ifdef
2021.12.30 删除 complex<double>
2022.1.24 增加 LD
2022.2.6 增加 lwb,upb
2022.2.9 修改 read,write
2022.2.13 long double(LD) 改为 double(DB)
2022.2.17 增加 putchar(10)(Endl)
2022.2.20 增加 namespace __gnu_cxx
2022.3.2 重构快读、快写(io>>,io<<),增加 endl
2022.3.7 ULL 改为 uLLDB 改为 dbPII 改为 PiiVI 改为 Vi
2022.3.19 增加字符串快写(template<typename T,T=is_integral<T>::value>:只识别整形)
2022.4.2 删除 __gnu_pbds::priority_queue,增加 mt,rnd
2022.4.19 删除 double(db)
2022.4.27 合并 ckadd,ckdel,增加 Mod,assert(ast)ckmax,ckmin 返回值改为 bool
2022.5.12 增加字符串快读
2022.6.2 修改快写、Mod,增加 ckdel
2022.6.4 增加 read,Add,Del,删除 Mod
2022.6.10 使用 lambda 重写 ckmax,ckmin,Add,Del,ckadd,ckdel
2022.6.11 增加 inf
2022.6.21 删除 Add,Del,ckadd,ckdel,Pow,增加 mint
2022.6.27 增加 Pow
2022.7.15 增加 getchar, putchar

posted @ 2021-05-02 15:54  401rk8  阅读(462)  评论(0编辑  收藏  举报