博文
文章平均质量分 87
ExRoc
这个作者很懒,什么都没留下…
展开
-
观察者模式
定义“观察者模式”是一个坑很多的模式。要实现一个简单的观察者模式可能并不困难,但如果想要实现好一个没有 bug、功能完善的观察者模式,或许也不容易,这其中有许多值得注意的地方。本文将通过一个布告板的例子1,首先用最直观的方式实现,分析代码实现中可能存在的问题,引出并应用观察者模式,以达到“优美”地解决案例的目的,在读者对观察者模式有一定了解之后,提出关于观察者模式的一些小知识点,以及不同场景下应用该模式需要注意的地方,最终介绍观察者模式的实际应用。案例现在已经有一个能获取实际气象数据(温度、湿度、原创 2020-12-15 00:17:07 · 257 阅读 · 0 评论 -
迪杰斯特拉 & 堆优化
单源最短路该博客的单源最短路算法要解决的就是在一个没有负权边的图上,找出所有点与源点 sss 的最短路径,这样一个问题。这里介绍迪杰斯特拉 O(n2)O(n2)O(n^2) 解法与堆优化 O(mlogm)O(mlogm)O(m\log m) 解法,其中 nnn 为图上节点数量,mmm 为图上边的数量。 不介绍也不推荐玄学复杂度的 spfaspfaspfa 解法。朴素写法思路:贪心...原创 2018-02-22 02:14:29 · 9993 阅读 · 6 评论 -
从快速幂到dp 优化:矩阵快速幂
幂运算 nn 个aa 相加我们当然不会写成一个循环,nn 个aa 相乘我们自然要用幂运算。幂运算裸题题目链接 L1-012. 计算指数解法 用上cmath 头文件中的pow() 函数即可,由于本题数据范围极小,所以根本不会出现什么精度问题。过题代码#include #include using namespace std;int原创 2017-07-14 21:05:06 · 2599 阅读 · 0 评论 -
涉及到double 值比较的eps 应用
在一般涉及到double 类型变量计算的时候,精度损失是必然的。double 的有效数字只有16 位,在16 位之后的数字就乱七八糟了,再加上乘除、cmath 等头文件的计算,精度又要损失几位,用cfloat 头文件里的DBL_EPSILON 作为精度误差可能不太管事了。所以我们可以自己设置一个精度常量eps,然后写几个inline 的比较函数,这里以1e-6 为例,要用的时候,用到哪个打哪个。最原创 2017-07-19 09:04:14 · 1482 阅读 · 0 评论 -
三种常用构图方式
这篇博客讲的不是按像素计算的图片或者摄影摄像的构图,而是节点与节点之间有边、边上有权值的图,如何把这样的一张图存入计算机中。这里将介绍三种较为常用的构图方式:邻接矩阵、vector 数组和链式前向星构图。 首先要弄清楚的一点是,计算机存图,存的是什么?包含两部分:节点和边,每个节点都有自己相应的信息,例如在一个战争时期军人的调度问题,每个城池拥有的军人数量,或者染色问题上节点的颜色等等,这些就原创 2017-07-20 12:01:08 · 3665 阅读 · 0 评论 -
欧拉函数相关数论
欧拉函数 欧拉函数ϕ(n)\phi(n) 的百度百科定义是:“对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(ϕ(1)=1)(\phi(1)=1)。”不如将小于改成小于等于,倒是省去ϕ(1)\phi(1) 的特例。关于欧拉函数的证明,不多赘述。本文侧重于欧拉函数在编程竞赛中的应用,这里只将其中三个知识点提出来(其他公式皆可由这三个公式推导得出): 1.ϕ(1)=1\phi(1)=原创 2017-08-07 00:59:52 · 630 阅读 · 0 评论 -
组合博弈问题:从 dfs 到 SG 函数
定义只有两个玩家轮流进行游戏;游戏规则对游戏双方是平等的;游戏能在有限的步骤内达到其中一方胜/败的局面,没有平局;双方都采取最优策略,面对相同的状态,对于游戏双方的必胜/必败态是确定的。必胜态与必败态首先,存在一个状态,使得先手为必胜态或者必败态,再根据以下两点,就可以确定所有状态的必胜/败态。如果一个状态的后继状态中,存在一个必败态,则该状态为必胜态;如果一个状原创 2018-01-16 00:14:23 · 486 阅读 · 0 评论