FDS晓风残月记略 | AOE网络与网络流&&哈希算法
可能大概是最后一篇自学FDS的笔记了, 解决最后两个问题
残月: 古人对十二月的雅称, 在此表示最后几篇文章
前言
大纲
AOE网络与网络流
哈希算法
参考资料
鹤翔万里的笔记本 | 数据结构基础
中国大学MOOC | 数据结构
正文-上
AOE网络
AOE(activity on edge)网络是一张有向带权图, 其中有向边代表活动, 权值代表活动持续的时间.
关键路径
一个AOE网络有且仅有一个入度为0的节点, 我们称之为源点S; 以及一个出度为0的节点, 我们称之为汇点T. 我们将源点的时间戳记作0.
节点是一个时间概念, 表示两项活动之间的间隔, 这个间隔有长有短. 对于任意一个节点(S,T除外), 当且仅当进入节点的活动全部完成, 离开节点的活动才能开始.
为了保证工期的按时完成, 我们要保证那些绝对不能拖延的活动按时完成, 由这些活动构成的路径, 我们称为关键路径.
节点的时间
对于任何一个节点, 我们存在一个最早发生时间EHT[]和最晚发生时间LHT[].
最早发生时间: 指对于节点V来说, 所有他的前提节点U都完成的时间点. 因为只有所有 ...
FDS晓风残月记略 | 带负权边最短路径&&双连通性
作为FDS的收尾, 补充几个主要是和图有关的算法
残月: 古人对十二月的雅称, 在此表示最后几篇文章
前言
大纲
带负权边最短路径 | Bellman-ford算法与SPFA算法
双连通性 | Tarjan算法
AOE网络与网络流
哈希算法
参考资料
鹤翔万里的笔记本 | 数据结构基础
中国大学MOOC | 数据结构
正文-上
在求解有关最小路径问题的时候, 我们常用的算法是Dijsktra算法和Floyd算法, 这两种算法虽好, 但是对于带负权边图却无能为力. 对于带负权边图的最小路径问题, 我们一般采用Bellman-ford算法及其优化版本SPFA算法.
Bellman-ford算法
与Dijsktra算法的不同
与采用贪心算法进行松弛操作的Dijsktra算法不同, Bellman-ford算法直接对所有边进行松弛, 这在导致其时间复杂度增加至O(∣V∣∣E∣)O(|V||E|)O(∣V∣∣E∣)的同时, 拥有了能处理带负权边图和检测负权回路的能力.
伪代码描述
相比于使用了贪心算法的Dijsktra算法, Bellman-ford算法的实现思路更 ...
C++ | STL III
在这一节, 我们将尝试探讨一个沟通了算法与容器的重要概念–迭代器
前言
参考资料
C艹STL库官方文档
咸鱼暄的代码空间 | 模板 (II) - 理解 STL:迭代器与函数对象
咸鱼暄的代码空间 | 理解 STL - 迭代器与函数对象
正文
从指针到迭代器
迭代器iterator这个名词初见可能比较陌生, 因此在前一篇有关STL的文章 C++ | STL I 中, 我使用了指针来类比这个概念. 今天让我们继续从指针重新开始, 来理解迭代器.
数组是最简单的容器辣!
让我们考虑实现一个数组容器吧, 也不需要支持特别复杂的算法, 有最简单的增改删查就可以了, 因此我们直接考虑用C艹自带的数组来实现我们的数组, 仿照STL的习惯, 我们把成员函数作如下命名
template <class ItemType, int Size>class my_array{ private: ItemType array[Size]; public: my_array(ItemType initial, int num = Size) ...
C++ | STL II
在对STL进行详解之前, 我们先来了解一下怎么使用STL吧! 毕竟在算法竞赛和实际应用中, 我们更加关注使用, 而不是关注底层.
前言
遇事不决, 查标准文档
参考资料
C艹STL库官方文档
咸鱼暄的代码空间 | 模板 (II) - 理解 STL:迭代器与函数对象
咸鱼暄的代码空间 | 理解 STL - 迭代器与函数对象
正文
使用STL | 以map为例
C艹STL库官方文档 | map
首先我们进入官方文档, 可以看到如下页面
请不要使用Chrome自带的翻译插件, 他只会让你更加看不懂;
另, 实在不行可以去看CSDN等社区的阉割介绍, 但请注意甄别;
又另, 这个世界上哪有意思准确的中文文档? 即便是国人自己开发的东西, 你说是吧, 尤雨溪?
想要使用一个STL, 首先要考虑如何实例化, 因此我们寻找构造函数map::map页面
C艹11为我们贴心的准备了5组构造函数, 而且下面有对应的解释
其中1最好理解, 构造一个空的map
map<char, int> demo1; //demo1为空
2被称为范围构造, 也就是利用迭代 ...
C++ | STL I
终于他喵的写到STL了淦, 前置的乱七八糟的东西太多了, 没错我说的就是你, 友元!
我打算先从STL的用法开始, 学习到STL的底层, STL系列也会写的更为详细, 因为他真的, 很重要
前言
STL(Standard Template Library) 源自于C艹第一个标准化版本C艹98(不是CC98哦), 它提供了强大的容器库(Containers library) 和算法库(Algorithm library) 以供使用者直接调用, 其背后体现了泛型编程(Generic programming) 的思想; 即使你像我一样对上面的一堆名词不甚了解, 也可以很好的利用它所提供的常见的数据结构和算法解决很多问题.
参考资料
咸鱼暄的代码空间 | 模板 (I) - 基本知识与 STL 使用
咸鱼暄的代码空间 | 模板 (II) - 理解 STL:迭代器与函数对象
咸鱼暄的代码空间 | 理解 STL - 迭代器与函数对象
YouTube | Back to Basics: Classic STL - Bob Steagall - CppCon 2021
为什么要STL
在我 ...
JS学习札记 | 基础语法
记录一下学习JS的过程
前言
其实想学js很久了, 但是没有一个好的理由, 但是想到三件套是很多前端工具基础, 而js更是基础中的基础(>_<), 这下不得不学了. JS的语法和C艹很像, 比如while, for, class的写法, 但是逻辑却和Python很接近, 毕竟同为轻量级的解释性脚本语言, 对于自身的定位自然是易于上手和开发.
因此我认为对于语法知识的掌握速度应该是没什么问题的, 更重要的是要理解js的本质–一门主要服务于HTML和Web的语言, 这就要求我们要更多的在实战中练习学到的知识, 更要广泛的尝试项目.
解释环境
Node: v20.10.0
参考资料
RUNOOB JavaScript教程
基础语法
类型
JS中有6个数据类型
string
number
boolean
object
function
symbol
3个对象类型
Object
Date
Array
和2个不包含任何值的数据类型
null
undefined
typeof可以查看数据类型
typeof "John" ...
CSS入门学习杂识 | 选择器
记录一点CSS学习心得
参考资料
RUNOOB-CSS教程
W3C-CSS教程
前言
想要高效快捷的学习CSS,你需要:
VSCode, with following extensions
Color Highlight | 颜色显示
Live Server | html热预览
前置知识
熟练的html
入门的JavaScript
辅助工具/网站
配色参考
图片素材
优秀的榜样网站
信息搜索能力
一些小创意和小自信
选择器
选择器(selector) 是CSS与HTML文档交流的桥梁, 是设置CSS样式必需的工具. 选择器的用法难度方差特别大, 用的高级的选择器不亚于使用JS, 而用的随意的选择器也非常适合入门者使用
如果你要在CSS中使用选择器, 你需要为HTML元素设置id和class
<div id="div_1" class="container">...</div>
基础选择器
id选择器
id选择器可以选择有特定id的HTML元素, 在CSS中用#定义, 使用语法如 ...
CSS入门学习杂识 | 盒子模型
记录一点CSS学习心得
参考资料
RUNOOB-CSS教程
CSDN | CSS盒子模型详解
前言
想要高效快捷的学习CSS,你需要:
VSCode, with following extensions
Color Highlight | 颜色显示
Live Server | html热预览
前置知识
熟练的html
入门的JavaScript
辅助工具/网站
配色参考
图片素材
优秀的榜样网站
信息搜索能力
一些小创意和小自信
盒子模型
在任意一个网页按下F12,就可以打开开发者工具,如下图所示,F12可以说是我们最得力的助手(之一)了。
对于学习CSS,我们需要用到的功能不如前端工程师那么多。点击右边第三行第一个图标,我们就可以选取页面上的某一个元素了。
如上图所示,我们选取了一个div属性的元素,其类是.my-home-window,我们可以在右边的源码栏里面看到更详细的信息,比如它的子元素和父元素,它的样式(如果有)以及它的其他可见属性。
我们可以通过这种方式定位某个元素,再到CSS文件中修改样式,但是这不是这篇文章的重点,重点在于我 ...
似水流年 | C程价值题归档
基本信息
授课教师: yhj
上课教材: 用不着
编译环境: gcc version 13.1.0 (x86_64-win32-seh-rev1, Built by MinGW-Builds project)
参考资料: C小程 琐碎知识点整理 | C 语言应试笔记 | 《C 陷阱与缺陷》笔记 | 何钦明PTA答案
P.S. 感恩学长学姐们的无私分享
MISC
设有声明:char *s1="xyz",*s2="123",t1[10],*t2;则能完成字符串 s1 和 s2 的值交换选项有( C )
A. t1=s1;s1=s2;s2=t1;B. strcpy(t1,s1);strcpy(s1,s2);strcpy(s2,t1);C. t2=s1;s1=s2;s2=t2;D. strcpy(t2,s1);strcpy(s1,s2);strcpy(s2,t2);
解释: 首先要明确题干中变量的类型,s1,s2以及t2的类型都是字符型指针,而t1的类型是字符数组(C语言没有字符串类型,题干中的字符串指的应该是抽象的字符串)
...
似水流年 | 微积分I知识点大纲
微积分好难
基本信息
授课教师: cjh
上课教材: 《微积分》(lxj版)
第 0 章 预备知识
实数可由有理数列逼近
∀a∈R,∃{qn}∈Q,s.t.limn→∞qn→a\forall a\in R,\exist\{q_n\}\in Q,s.t.\displaystyle\lim_{n\rightarrow\infty}q_n\rightarrow a∀a∈R,∃{qn}∈Q,s.t.n→∞limqn→a
De Morgan定律
C−(A∩B)=(C−A)∪(C−B)C-(A\cap B)=(C-A)\cup(C-B)C−(A∩B)=(C−A)∪(C−B)
C−(A∪B)=(C−A)∩(C−B)C-(A\cup B)=(C-A)\cap(C-B)C−(A∪B)=(C−A)∩(C−B)
映射
设f:X→Y设f:X\rightarrow Y设f:X→Y
∀x1,x2∈X,x1≠x2,s.t.f(x1) ⟺ f(x2)⇒f为单射/一对一映射,但不一定y都可由x映射到\forall x_1,x_2\in X,x_1\ne x_2,s.t.f(x_1)\iff ...