随笔分类 - C++
摘要:部分编译器支持128bit的整数表示,但是需要手写输入输出。 注意:__int128等价于__int128_t,不存在int128和int128_t。 输出函数: void Print128(__int128 num) { if(num<0) putchar('-'),num=-num; if(nu
阅读全文
摘要:由于fill只能初始化一维数组,故输入的时候需要将高维下标列出: 例如: LL maxdp[15][15][25][2000]; LL mindp[15][15][25][2000]; fill(maxdp[0][0][0], maxdp[0][0][0] + sizeof(maxdp) / 8,
阅读全文
摘要:bitset可以更快的求大量位的表示和运算 两个bitset<n> 之间可以直接做与或非异或操作 同时也可以使用set、count等位操作 操作方法: 1、https://blog.csdn.net/JAN6055/article/details/123543847 2、https://fanfan
阅读全文
摘要:二维数组做函数参数时,第一维可以省略,第二位不可省略,必须为一个常数。 例如: const int N=1000; void mul(int a[][N],int b[][N]) { } View Code
阅读全文
摘要:踩坑记录: 对于max_element(begin,end); 如果begin==end,则当前查找的区间范围为0, 此时,会直接返回begin,导致答案(可能)错误。
阅读全文
摘要:注意,异或(^)和与(&&)、或(||)、位与(&)、位或(|)的优先级类似 都比加减乘除要低。 注意在运算时要加括号
阅读全文
摘要:#include<iostream> #include<string> #include<vector> #include<fstream> #include"output.h" #include"Delaunay.h" #include"c2dtriangle.h" #include<iomani
阅读全文
摘要:https://www.bilibili.com/read/cv13020375/ https://files.cnblogs.com/files/ECJTUACM-873284962/bigint-10-2-src.7z 作者:C语言编程老师 https://www.bilibili.com/re
阅读全文
摘要:set的比较函数必须写成仿函数(class、struct、lambda) 而不能写成函数 且operator()的参数和函数都需要用const修饰 举例: struct cmp { bool operator()(const pair<int, string>& p1,const pair<int,
阅读全文
摘要:cout输出浮点数默认保留六位有效数字。 按照%lf输出,即保留六位小数 cout << fixed << a << endl; View Code 设定保留小数位数 #include<iomanip> cout << setiosflags(ios::fixed) << setprecision(
阅读全文
摘要:sort的比较函数可以视为重写小于号,也可以视为按照cmp为true的顺序排序 lower_bound可以视为重写小于号,且cmp的第一个参数为容器中的元素,第二个参数为二分查找的元素。 查找的是第一个非小于的为位置,即大于等于的为位置。 upper_bound可以视为重写小于等于号?未查证。
阅读全文
摘要:C++中,=、+=、^=等赋值运算符,返回左操作数的引用,故可以连续操作 比如,a=b=c 比如(a+=b)%=MOD
阅读全文
摘要:为了实例化模板函数,编译器必须掌握函数模板/类模板成员函数的声明和定义。 因此只能将模板函数/类模板尘缘函数的声明和定义都放置在同一个头文件/源文件中(或者定义放在主函数的文件中)。
阅读全文
摘要:double和long long都是8字节,但是由于double使用科学计数法表示,所以数据范围比long long要大很多, 可以用来解决long long数据越界的问题(但是科学计数法精度会降低), long double 16/12字节,可以表示的范围更大。
阅读全文
摘要:如果一个二维网格中数据不重复,可以确定其鞍点最多有一个。 假设鞍点是列极大行极小, 则,与鞍点同行或同列的点显然不是鞍点, 与鞍点不同行列的点z,可以对应,鞍点行列中的两个点x和y 且显然x<y(因为x<鞍点<y) 如果z<x,则z不为列极大,如果z>y,则z不为行极小, 如果x<z<y,则z不为列
阅读全文
摘要:C++中,对负数取模的结果为负数,需要特殊写取模函数 LL Mod(LL num,LL mod) { return (num%mod+mod)%mod; } View Code
阅读全文
摘要:容器的resize(n,a) 如果原容器中数据不超过n,则在后面补充a,但是容器中的原内容不变。 如果想全清空需要先clear();
阅读全文
摘要:C++中class和struct除了空的默认构造函数,还存在传入初始化列表的默认构造函数。 使用方式为: struct s { int a,b; double c; } int main() { s s1={1,1,1.1}; } View Code 但是在类内如果提供了构造函数,则不会生成默认构造
阅读全文
摘要:想要将集合中数字分为两个总和相等的集合,可以使用启发式优化的方式。 方法为:将数字依次加入到,两个集合中,当前和较小的集合。 这样可以将两个集合的误差降到一个数字的大小(|n|)级别,而非sum(|n|).
阅读全文
摘要:理论上unordered_map的存取速度很快。 但是在数据量很大的时候,哈希冲突过多会导致速度变慢。 此时可以使用map替代。(存疑) 同时,虽然unordered_map理论的插入是O(1),但是实际一秒只能运行1e5次左右,远低于1e8-1e9的数量级。 https://codeforces.
阅读全文