- 博客(5)
- 收藏
- 关注
原创 关于快速幂
当我们求一些类似于a^k%p这些题目时,在求a^k时,如果使用暴力的算法,那么显而易见,要进行k次循环。因此快速幂就应运而生了,它只需要logk的复杂度。其实它的核心思想就是将k转换成二进制,从而简化计算。例如求a^5时,5可以化为101,因此就可以变成a^2^0*a^2^2,由原来的5步转换为2步,大大简化了计算。下面我贴上我的代码。#include "iostream"#include "algorithm"using namespace std;typedef long long
2022-02-23 01:10:50 106
原创 关于堆的建立
虽然有时候建队时大家会使用优先队列建堆,但stl建堆无法删除和修改其中的某个元素,因此今天我先复习一下用一维数组建堆。堆是一种完全二叉树,除最后一排都会填满,手动建堆分为以下几步。插入一个数,寻找最小值,最后删掉最小值。堆的维护是通过类似于比较父节点或儿子节点的大小然后anup和down的操作来实现的。举一个简单的堆排序。#include <iostream>#include <algorithm>using namespace std;const int N
2022-02-21 23:18:21 520
原创 cf补题(2.20)
关于前几天的cf,c题是一个典型大数加减的变形,贴一下原题。Tanya is learning how to add numbers, but so far she is not doing it correctly. She is adding two numbersaaandbbusing the following algorithm:If one of the numbers is shorter than the other, Tanya adds leading zeros s...
2022-02-20 23:55:57 269
原创 关于用Dijksra算法求最短路
Dijksra是图论中的一种最基础的算法,但之前我对其理解有偏差,直到今天才纠正过来。首先Dijksra是一种基于贪心的算法,可以求解最短路问题,但不能用于对于负全边的计算上。其思想简单来说就是将将所有地点分为s(已确定到起点最短路)和p(未确定)两个集合,通过n次迭代,每次从p中找到最短路径t来,并将t加入s中,从而确定最短距离。例如蒜头君来到一个巨大的游乐场,这里有n个景点。景点和景点之间不能步行,只能乘坐指定的游览车。游览车的数量是无限的,只要你想乘坐就能瞬间出发。现在有m种类型的游览...
2022-02-19 22:38:25 549
原创 关于KMP字符串
关于kmp,实际上算是一种比较抽象的概念,其是在暴力算法的基础上所进行优化。在起初,一些匹配字符串上我就会常常去使用暴力枚举的方法。例如有很经典的一道例题。Findalloccurrences of the stringwordin thestringtext.InputThefirstlinecontainsthe stringtext,the secondlinecontainsthe stringword.Thelengthof each stringis greater t...
2022-02-19 00:52:05 417
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人