
模板
KKKZOZ
This is Kelicopter speaking!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
欧拉筛与埃氏筛模板以及简单讲解+P3383题解
以洛谷P3383作为例题原创 2020-08-31 13:51:43 · 254 阅读 · 0 评论 -
拓扑排序(模板)
原创 2018-02-07 22:59:42 · 345 阅读 · 2 评论 -
Kruskal
最小生成树(模板)这里只介绍Kruskal算法,在NOIP考试中,还未成出现prime/Kruskal算法卡其中一种的情况Kruskal算法基本思路:首先把所有的边按照权值先从小到大排列,接着按照顺序选取每一条边,如果这条边的两个端点不属于同一集合,那么就将它们合并,直到所有的点都属于同一个集合为止。算法实现:用一个结构体数组e来保存信息,再用sort排序,这里需要自己写一个函数cmp来定义排序标...原创 2018-02-07 22:57:22 · 225 阅读 · 0 评论 -
素数筛
素数筛,顾名思义就是要筛去合数,留下素数,达到预处理的效果 基本思路:把从1开始的,某一范围内的正整数从小到大顺序排列,1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。 上代码之前,配上一道洛谷的题P1865 A % B Problem:点击这里 就是一道素数筛的裸题!!!(配上前缀和使用更美味) 附上本人的解题报告: 上代码: #include #inc原创 2018-02-04 23:22:43 · 219 阅读 · 0 评论 -
快速幂,大整数取模
快速幂不解释,这里的大整数是指long long无法存储的整数(好像有一点鸡肋) 传送门: gcd和lcm:点击这里 上代码: #include #include #include using namespace std; char n[10000000]; int qmod(int a,int b,int c) { if(b==0) return 1; int x=qmod(a原创 2018-02-06 19:37:14 · 522 阅读 · 0 评论 -
gcd,lcm
gcd,数论基础之一,即两个数的最大公因数(gcd)以及lcm,即两个数的最小公倍数; 传送门: 快速幂,大整数取模: 前者方法是辗转相除法,原理自行百度,手动模拟一次即懂 至于后者………………………… 上代码: #include #include using namespace std; int gcd(int a,int b) {return b==0?a:gcd(b原创 2018-02-06 19:29:10 · 353 阅读 · 1 评论 -
SPFA
SPFA算法(模板) 昨天才打了dijkstra堆优化的模板,今天再打这个……发现两个算法好接近啊,特别特别像 基本思路:一开始时将源点加队,每次从队列中取出一个元素,并对所有与他相邻的点进行松弛,若某个相邻的点松弛成功,则将其入队。 直到队列为空时算法结束。(减少了不必要的计算) 传送门 Dijkstra(堆优化):点这里哈哈哈 OK,代码上有详细解释,上代码: #include原创 2018-02-04 23:08:17 · 720 阅读 · 0 评论 -
Floyd算法
Floyd 算法(模板) 第一次写博客,就把我的第一篇博客贡献给图论吧哈哈哈哈 今天正在寒假集训,正好讲了几种最短路径算法,今天晚上我就归纳一下并贴出模板,如果有时间我会贴出题的 Floyd 该算法由Robert W.Floyd于1962年发表在Communications of the ACM上。 正在让代码更具有可读性…… #include #include #defi原创 2018-02-02 20:32:10 · 327 阅读 · 0 评论 -
Dijkstra(堆优化)
Dijkstra 算法 (模板)【堆优化】 传送门: Dijkstra:建议先掌握原始版本 基本思路:用一个优先队列,priority queue来保存点到点之间的距离,优先队列自动把队列里的数据排序(这里需要手动写一个bool型函数来定义为由大到小排序),枚举各种可能的走法,包括当某两点之间的路线为无限大时,(所以可以自动处理重边,而原始版本的不能)最后把最小的方案(即dis)输出给d数组原创 2018-02-03 23:25:58 · 589 阅读 · 0 评论 -
Dijkstra
Dijkstra 算法 (模板) 图论中基本的最短路径算法之一 传送门: Floyd算法:就是这里哈哈哈 基本思想:其实我觉得基本思路和Floyd差不多,利用松弛操作 比如:a--->b,从a到b,在没有其他路的情况下直接走当然最短,所以要使其更短,就只有引出第3个点,让a--->c--->b比a--->b短 用代码解释这句话就是 if(dis[v]>dis[u]+a[u][v])原创 2018-02-02 21:10:02 · 325 阅读 · 0 评论