02 2022 档案
摘要:Flood Fill 通过初始的一个位置,覆盖该位置周围有关联的格子, 可以在线性时间复杂度内,找到某个点所在的连通块 题目 池塘计数 城堡问题 山峰和山谷 最短路模型 计算到达某个位置需要的最短步数、最短路径 使用BFS第一次搜到目标的结果就是最短的,只要遍历从该点出发的所有情况,且进行标记判重,
阅读全文
摘要:【动态规划 | 树形DP小结】 参考:RioTian 树形DP,一般是在树上进行DP,由于树固有的递归性质,树形DP一般都是递归进行的。这是说我们的树其实是可以递归定义的,树的每一颗子树也是一个完整的树,直到叶子结点可以看做是递归终点。 树形DP是先算子树再进行合并,在实现上与树的后序遍历相似,即左
阅读全文
摘要:状态压缩DP 对于某些动态规划问题,可以用深搜来枚举状态,但是那样的话时间复杂度就太高了。对于此类问题我们采用二进制表示状态,用1和0来表示某位置不同的状态。 1、对于状压DP问题,我们一般取一个初始状态。确定状态数组的含义。 2、明确相邻状态的转移,一般我们可以记录某个状态可以转移的相邻状态(打表
阅读全文
摘要:算法基础课部分题目总结 第一章 基础算法 快速排序 快速排序 第k个数 归并排序 归并排序 逆序对的数量 二分 数的范围 数的三次方根 高精度 高精度模板 前缀和与差分 前缀和差分模板 双指针算法 最长连续不重复子序列 数组目标的元素和 判断子序列 位运算 二进制中1的个数(题解中有总结的方法) 离
阅读全文
摘要:页面置换算法 概念 地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。 先进先出置换算法 FIFO 是最简单
阅读全文
摘要:python爬虫分析 python是解释执行 if __name__ == '__main__': # 当程序执行时 main() import urllib.request # response = urllib.request.urlopen("http://www.baidu.com") pr
阅读全文
摘要:理解 动态规划是指把一个问题分成若干个子问题,通过局部最优解得到全局最优的一种算法策略或者说一种思想方法,简单来讲就是用一个数组表示我们要求的问题的答案:由前一个问题的答案推出另一个问题的答案。 dp一般有三个步骤: 1、设计状态:设计合适的数组以及相应的含义。 2、状态转移方程:从已知问题的答案推
阅读全文
摘要:滚动数组 作用在于优化空间,主要应用在递推或动态规划中,可以循环利用空间。 例如斐波那契数列,只由前面两个元素得出下一个元素 int d[]; d[0] = d[1] = 1; for(i = 2;i<80;i++) { d[i%3] = d[(i-1)%3] + d[(i-2)%3]; } 二维数
阅读全文
摘要:区间DP 区间DP常用模板 所谓区间DP,指在一段区间上进行动态规划,一般做法是由长度较小的区间往长度较大的区间进行递推,最终得到整个区间的答案,边界就是长度为1和2的区间 所有的区间DP问题,有两种写法 1、第一维都是枚举区间长度,第二维枚举起点,先求出小区间的属性值,进而扩展到大区间 核心思想:
阅读全文
摘要:例题 指数型枚举 输入样例: 3 输出样例: 3 2 2 3 1 1 3 1 2 1 2 3 题解: #include<iostream> using namespace std; const int N = 20; bool st[N]; int m; // 要输入的整数 void dfs(int
阅读全文
摘要:并查集 并查集可用来解决一些元素分组的问题,管理一系列不相交的集合 合并:把不相交的集合合并到一个集合 查询:查询两个元素是否在同一集合 原理 起初有1~n个元素,它们分别指向自己,父节点即为自己 当两个元素要合并时,用其中一个元素指向另外一个fa[i] = j, 代表 i 的父元素是 j 。 查询
阅读全文
摘要:一、堆的概念测试 1、堆的性质 是一颗完全二叉树 每个节点的值都大于或等于子节点的值,为最大堆;反之为最小堆 2、堆的存储 一般用数组来表示堆,下标从0开始。则下标为 i 的节点的父节点下标为(i-1)/2,其左右子节点分别为(2i + 1)、(2i + 2)。 下标从1开始 左右节点2i 、 2i
阅读全文
摘要:分解质因数 #include<iostream> #include<cmath> #include<cstring> using namespace std; int main() { int n; cin >> n; while(n--) { int x; cin >> x; for(int i
阅读全文
摘要:多线程创建方式一 方式一、继承Thread类 1、创建一个继承于Thread的子类 2、重写run()方法 3、创建Thread类的子类对象 4、通过对象调用start()方法 start方法的作用:启动当前线程 调用当前线程的run方法(启动一个新线程) 如果直接调用run()方法不会启动新线程,
阅读全文
摘要:泛型 1.泛型的作用 当元素的类型不确定,其他部分是确定的,例如关于这个元素如何保存,如何管理是确定的,因此把元素的类型设计成一个参数,这个类型参数叫做泛型。 其他说明 泛型,允许在定义类和接口的时候,通过一个标识标识类中某个属性的类型或者是某个方法的返回值及参数类型,这个类型参数将在使用时确定(传
阅读全文
摘要:集合 1.集合Collection 1.1collection接口继承树 1.2Map接口继承树 2.Collectio接口方法 Collection 接口是List、Set 和 Queue 接口的父接口,该接口中定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合 在
阅读全文
摘要:主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段。 用法 1、类的包名和类名 > 实例化类 A a = (A) Class.forName("pacag
阅读全文
摘要:Java常类 1、字符串相关类 String String 是一个final类,代表不可变的字符序列 字符串是常量,用双引号括起来,它们的值在创建之后不能更改 String 实现类Serializable接口:表示字符串是支持序列化的 实现了Comparable接口:可以比较大小 String内部定
阅读全文
摘要:IO流与文件传输 1.File类的使用 java.io.File类: 文件和文件目录路径的抽象表示形式,与平台无关 File 能新建、删除、重命名文件和目录,但不能访问问价内容本身,如果需要访问文件内容本身,则需要输入\输出流 在程序中表示一个真实存在的文件或目录,必须有一个File对象,但java
阅读全文
摘要:获取本地ip initComponents();//在此处后面添加: try { InetAddress addr = InetAddress.getLocalHost(); txtHostName.setText( addr.getHostAddress()); } catch (Un
阅读全文