- 博客(24)
- 收藏
- 关注
原创 质数wqwq
如果i为合数,则其一定可以分解成质数相乘的形式,并且这些质数一定比i小;那么i就会在遍历到这些质数时就被除完了,故i一定为质数,证毕。图源ACwing题解作者: ChinaPie。
2022-12-08 22:30:13 48
原创 哈*希*表
3.1 首先,0x3f3f3f的体验感很好,0x3f3f3f3f的十进制是1061109567,也就是10^9级别的(和0x7fffffff一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。比如0x3f3f3f3f+0x3f3f3f3f=2122219134,这非常大但却没有超过32-bit,int的表示范围,所以0x3f3f3f3f还满足了我们“无穷大加无穷大还是无穷大”的需求。
2022-11-26 20:23:36 76
原创 并查集hj
可以将并查集理解为一棵树p[]表示祖宗节点,每一个点一开始的祖宗节点都是自己本身如果要将两个数合并到一个集合中,则直接让一个数的祖宗节点变为另一个点询问两个数是否在同一个集合中就只要查看他们的祖宗节点是否相同。
2022-11-24 22:38:16 69
原创 KMP字符串
在每次失配时,不是把p串往后移一位,而是把p串往后移动至下一次可以和前面部分匹配的位置,这样就可以跳过大多数的失配步骤。而每次p串移动的步数就是通过查找next[ ]数组确定的。s[]模式串 p[]模板串 s较长,在s中寻找p。,一个字符串的全部头部组合;,一个字符串的全部尾部组合;
2022-11-22 23:07:48 72
原创 手写堆orz
手写堆的本质是一颗完全二叉树;因为要维护堆的单调性,所以插入新数时放在数的最后,然后将树遍历一遍把插入的数放到满足单调性的位置(小根堆:根结点最小;反之则为大根堆)在删除根结点(或任一元素)时用末尾元素将其覆盖,然后元素数减一。
2022-11-16 13:53:00 356
原创 单双链表hhh
因为数组模拟的单链表只能从前往后遍历,不能从后往前,所以删除点时要依靠前一个点。将要删除的点的前一个点指向要删除的点的下个点。ne[i] 表示节点i的next指针是多少。再将原先要插入位置的左点指向要插入的点。idx 存储当前已经用到了哪个点。head 表示头结点的下标。先让新点指向要插入位置的右点。e[i] 表示节点i的值。
2022-11-13 15:07:30 77
原创 快排+归并
对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对。重要的地方在于,一个元素可以不只是在一个逆序对中存在。如果 k > j > i 且 a[i] > a[j] > a[k],那么这里有两个含 a[i] 的逆序对,分别是 (a[i], a[j]) 和 (a[i], a[k]),
2022-11-13 09:03:15 124
原创 0x01位 运 算
根据计算机负数表示的特点,如一个数字原码是10001000,他的负数表示形势是补码,就是反码+1,反码是01110111,加一则是01111000,二者按位与得到了1000,就是我们想要的lowbit操作。使用lowbit操作,进行,每次lowbit操作截取一个数字最后一个1后面的所有位,每次减去lowbit得到的数字,直到数字减到0,就得到了最终1的个数,
2022-11-06 18:32:34 673
原创 图论进阶版 拓扑排序+Dijkstra+ 有边数限制的最短路(Bellman - ford)+spfa(bf优化)+floyd+最小生成树
一个有向图,如果图中有入度为 0 的点,就把这个点删掉,同时也删掉这个点所连的边。一直进行上面出处理,如果所有点都能被删掉,则这个图可以进行拓扑排序。
2022-10-26 22:43:51 406
原创 图论基础知识(废
从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。如果给定图是连通的无向图或者是强连通的有向图,则遍历过程一次就能完成,并可按访问的先后顺序得到由该图的所有顶点组成的一个序列。
2022-10-24 22:44:10 547
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人