摘要:
动态规划 动态规划就我们常说的 dp,我在这里总结一下动态规划的笔记。 动态规划是一种非常实用的思想,常用来解决最优化、计数问题 基本思想:要解一个给定的复杂问题,我们可以将其简化为解其更简单的子问题,在根据子问题的解得出原问题的解。 子问题需要满足的性质: 子问题的范围更小,且子问题个数有限。 最 阅读全文
摘要:
质数和约数 这个章节没啥说的,就是几个函数。 bool is_prime(int x)//判断质数函数 { if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) return false; return 阅读全文
摘要:
前言:二分图的定义和判定 二分图也称二部图,是图论里的一种特殊模型,也是一种特殊的网络流。其最大的特点在于,可以将图里的顶点分为两个集合,且集合内的点没有直接关联,如下图所示。 如果某个图为二分图,那么它至少有两个顶点,且其所有回路的长度均为偶数,任何无回路的的图均是二分图。 见图2所示,其存在回路 阅读全文
摘要:
前言 最小生成树和最短路还是区别很大的,所以又双叒来写了。 Kruscal算法 最小生成树问题顾名思义,概括来说就是路修的最短。 接下来引入几个一看就明白的定义: 最小生成树相关概念: 带权图:边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权。 最小生成树( 阅读全文
摘要:
前言 最短路问题分为两个模块,一个是单源最短路,一个是多源汇最短路。而其中有4个算法。所以可以分别总结一下。 Dijkstra 算法 这里介绍 Dijkstra 算法,它是一个应用最为广泛的、名气也是最大的单源最短路径算法Dijkstra 算法有一定的局限性:它所处理的图中不能有负权边 「前提:图中 阅读全文
摘要:
概念 在一个有向图中,对所有的节点进行排序,要求没有一个节点指向它前面的节点。 先统计所有节点的入度,对于入度为0的节点就可以分离出来,然后把这个节点指向的节点的入度减一。 一直做改操作,直到所有的节点都被分离出来。 如果最后不存在入度为0的节点,那就说明有环,不存在拓扑排序,也就是很多题目的无解的 阅读全文
摘要:
个人认为BFS比DFS难度要大一些,所以来这里做个笔记。 比较可怜的是本蒟蒻并没有找到BFS这个东西解题有什么规律,所以我只能粘上3个代码。 模板 当然一个差不多点儿的模板还是要有的。 //模板1 #include<cstdio> #include<cstring> #include<queue> 阅读全文
摘要:
前几天有人跟我说,啊,说dfs一搜搜着搜着就把自己搜蒙了,说一写dfs就要dfs(int a,int b,int c),括号里面放一堆东西。啊今天我要澄清一下,dfs其实没有你想的那么复杂。 dfs这个玩意其实是有模板的: //DFS模板 inline void dfs(int u){ if(u== 阅读全文
摘要:
详细总结STL 为什么C比C更受人欢迎呢?除了C 的编译令人感到更舒适,C的标准模板库(STL)也占了很重要的原因。当你还在用手手写快排、手写二叉堆,挑了半天挑不出毛病的时候,C党一手STL轻松AC,想不嫉妒都难。 所以这篇随笔就带大家走进博大精深的C++STL,系统讲解各种STL容器及其用法、作用 阅读全文
摘要:
重载运算符 这篇随笔我来讲解一下C++语言中重载运算符的相关知识。 一、重载运算符的用途 这是一个比较哲学的问题:我们为什么要重载运算符? 理由就是,我们C语言中已经给出的运算符(包括算数运算符和逻辑运算符)只是针对C语言中已经给定的数据类型进行运算,假如我们想要对我们的自定义数据类型进行运算的话, 阅读全文