摘要:
C++库为我们提供了很多生成随机数的方法。 使用C的随机数生成法 先学过C语言,或者仅仅用C++做算法的人。对rand()是非常熟悉了。这个函数没有参数,生成0到RAND_MAX的随机数(RAND_MAX随环境可能是16位范围或32位范围)。 #include <stdlib.h> #include 阅读全文
摘要:
最常见的LCA(树上公共祖先)都是在线算法,往往带了一个log。有一种办法是转化为“+-1最值问题”得到O(n)+O(1)的复杂度,但是原理复杂,常数大。今天介绍一种允许离线时接近线性求LCA的Tarjan算法。 一个点和其他点的LCA必定是它到root路径上的所有节点之一,而另一个节点刚好在哪个节 阅读全文
摘要:
C++的类成员指针是一种奇葩的指针。 假设现在我们要表示一个三维的点,现在有两种定义方式: struct point1{ int x, y, z; }; struct point2{ int c[3]; }; 第一种的优点是更直观,但第二种可以方便的用for遍历三个属性。最终我选择了第一种,但是我还 阅读全文
摘要:
EAFP 与 LBYL 是两种“防御性处理机制”,相信你一定接触过,只是可能没有深入思考过这个问题。 输入两个数,要输出相除后的结果: a, b = map(int, input().split()) print(a / b) 但是b可以等于0,我们有两种检查方式: # EAFP try: prin 阅读全文
摘要:
python的可变不可变与各种浅拷贝深拷贝规则,一并梳理。 Python一切皆引用 在C++/Java里,int a = 1就是创建变量为a,赋值为1;int b = a就是创建变量b,赋值为a的值。a与b是毫不相干的,即“变量是盒子”,但是这不利于理解Python中的一个变量定义。在Python里 阅读全文
摘要:
标准库定义了许多用于操作序列的算法,大多在algorithm和numeric文件中,大多数函数的原理并不复杂,但是在很多情况下可以替代手写的情况,甚至更加优秀。 这类算法函数非常多,但是他们都有共同的结构,类似的参数特性,所以非常好记忆。比如我们最经典的std::sort(beg, end, cmp 阅读全文
摘要:
原帖地址:CSDN「隨意的風」gcc 中-O -O1 -O2 -O3 -Os -Ofast -Og优化的原理 一般来说,如果不指定优化标识的话,gcc就会产生可调试代码,每条指令之间将是独立的:可以在指令之间设置断点,使用gdb中的 p命令查看变量的值,改变变量的值等。并且把获取最快的编译速度作为它 阅读全文
摘要:
这是牛客网上的C/C++的选择题的错题,有一些题还是有点意思。 当然不是所有都有总结,有明显歧义的不管,过于简单的不管(简不简单因人而异,我先阅读了C++ Primer后再开始做的练习,因此对于原书中重点强调过的知识会记忆更深刻,书中没怎么提到的知识就相对容易出错)。 地址:https://www. 阅读全文
摘要:
“函数”是高中课本就有的概念,“关系”是大学离散数学里研究集合元素的联系时出现的更常见的概念。上课的时候其实大部分内容没有难度,给人“废话”的感觉,但是还是有些东西超出了高中的认知,还有些与程序设计结合起来后认识更深了。 什么是关系 关系(relation):有集合$A,B$,那么$A\times 阅读全文