随笔分类 - 杂项
摘要:namespace GSM{ int pw1[N],pw2[N],p; void init(){ pw1[0]=1;for(int i=1;i<=len;i++)pw1[i]=1ll*pw1[i-1]*2%p; pw2[0]=1;for(int i=1;i<=N/len;i++)pw2[i]=1ll
阅读全文
摘要:枚举二进制下的子集 for(int s=S;s;s=(s-1)&S) 然后 \(s\) 就枚举了 \(S\) 二进制下的所有子集。 全排列 c++ 内置了一个比较方便的函数: next_permutation() 我们可以通过这个直接得到下一个全排列。 具体的使用方法是开一个数组初始塞上一个排列然后
阅读全文
摘要:这个东西的主要应用是对 pair 类型排序。 priority_queue <pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> t;
阅读全文
摘要:一般而言c++直接使用mt19937即可,其几乎是rand()的绝对上位替代。 库:#include<random> 定义:mt19937 rnd(time(0));。其中 time(0)的位置是随机种子,不填也行。 使用:int x=rnd()%p;这时 \(x\) 会是 \([0,p-1]\)
阅读全文
摘要:\le \ge \in \mathbb{M} a \qquad b \ne \forall \exists \left \lfloor \right \rfloor \nmid \varnothing \[\begin{aligned} \le \\ \ge \\ \in \\ \mathbb{M}
阅读全文
摘要:一般而言,c++中保留小数有两种做法。 cout double ans=3.1415926; cout<<setprecision(2)<<ans; output 3.14 但需要注意的是,如果小数没有预设的那么长,其后面不会补零而是会改为空格。因此不太建议。 如果cout要四舍五入的话要加fixe
阅读全文
摘要:STL大法好! stable_sort 基于归并排序,时间复杂度稳定同时并不会改变相对顺序,平替sort,用法一模一样。(可以过一些甚至卡sort的毒瘤,但是由于sort是均摊复杂度 \(O(nlogn)\),因此sort在某些题中会快一点,如SA) bitset 按照 Oi Wiki 的说法,bi
阅读全文
摘要:c++中重载运算符是一个极重要的工具。 虽然在OI中运用并不算太多,但在对于优先队列的运算、各种以结构体为基础的数据结构中,重载运算符有着其几乎无可替代的地方 格式 以最常用的对于dijkstra堆优化为例。由于优先队列默认是大根堆,所以我们要将大于号重载为对于边权值的小于运算 struct edg
阅读全文
摘要:离散化可以说是非常不熟练的部分做一次错一次 通过c++自带的函数可以很方便地进行离散化的操作 函数unique去重,lower_buond在有序的序列上二分查找。 for(int i=1;i<=n;i++) cin>>a[i],b[i]=a[i]; sort(b+1,b+n+1);int len=u
阅读全文

浙公网安备 33010602011771号