第12章 并查集
- 格式:pdf
- 大小:337.72 KB
- 文档页数:19
清华简《系年》12~15章解析子居第十二章楚庄王立十又四年,王会诸侯于厉,郑成公自厉逃归,庄王遂加郑乱。
晋成公会诸侯以救郑,楚师未还,晋成公卒于扈。
整理者言:“厉,国名,在今湖北随州东北,或作‘赖’。
王夫之《春秋稗疏》则以为在今河南鹿邑东。
楚庄王十四年会诸侯于厉一事,《春秋》宣公九年未能明记,以致后代学者多有误会。
”①孙飞燕《释〈左传〉的“厉之役”》②一文于“厉之役”非杜注宣公六年事有详说,本文只略作补充。
宋人叶梦得在《春秋三传谳》中已辨“厉之役”杜预之注为非,其《左传谳》卷四言:“按《经》及《传》前皆无厉役之事,杜预以六年楚人伐郑取成而还当之,然《传》本不言厉,何以知其即此役?十一年《传》言厉之役,郑伯逃归。
杜预复指前六年事,皆无据,特附会以成其说尔。
且既取成而还,则何罪复伐?此书在九月晋侯、宋公、卫侯、郑伯、曹伯会于扈之后,盖郑既与楚成,复叛而从晋,故讨之。
是以十一年辰陵之盟,郑子良曰:‘晋楚不务德而兵争,与其来者可也。
’乃从楚是矣。
《传》盖横出厉役事以相乱也。
”①《清华大学藏战国竹简(贰)下册》第163页注一,中西书局,2011年12月。
②《深圳大学学报(人文社会科学版)》第29卷第2期,2012年3月。
厉地,整理者已提到“王夫之《春秋稗疏》则以为在今河南鹿邑东”,王夫之《春秋稗疏》卷上言:“厉,古与赖通。
《公羊释文》音赖,是已。
此所伐之厉,即楚围所灭之赖也。
老子生于苦县之厉乡,一曰赖乡,地在考城、鹿邑、亳州之间。
齐移救徐之师,西向伐厉,厉与楚而病徐也。
杜氏乃谓义阳随县北之厉乡。
随州之厉,乃神农所生之厉山,亦曰烈山,非国也。
齐桓帅八国之兵以伐楚,尚次陉而不深入,安能轻率一曹,越江汉之北而向随乎?且随为随侯之国,非厉国明矣。
于时随方率汉东诸侯叛楚,齐所宜招徕者,何为远涉以伐之邪?”所辨甚确,故此后沈钦韩《春秋左传地名补注》、程发轫《春秋左传地名图考》、杨伯峻《春秋左传注》等书皆从其说。
且《春秋·昭公四年》载:“秋七月,楚子、蔡侯、陈侯、许男、顿子、胡子、沈子、淮夷伐吴,执齐庆封,杀之。
符号表整理表姓名:职业工种:申请级别:受理机构:填报日期:变量符号说明福州大学2015 年硕士研究生入学考试专业课课程(考试)大纲1.考试科目名称: 《数据结构与程序设计》2.招生学院:数学与计算机科学(软件)学院说明:1、考试基本内容:一般包括基础理论、实际知识、综合分析和论证等几个方面的内容。
有些课程还应有基本运算和实验方法等方面的内容。
字数一般在300字左右。
2、难易程度:根据大学本科的教学大纲和本学科、专业的基本要求,一般应使大学本科毕业生中优秀学生在规定的三个小时内答完全部考题,略有一些时间进行检查和思考。
排序从易到难。
目录第1章编译器概述第2章词法分析2.1 词法记号及属性2.1.1 词法记号、模式、词法单元2.1.2 词法记号的属性2.1.3 词法错误2.2 词法记号的描述与识别2.2.1 串和语言2.2.2 正规式2.2.3 正规定义2.2.4 状态转换图2.3 有限自动机2.3.1 不确定的有限自动机2.3.2 确定的有限自动机2.3.3 NFA到DFA的变换2.3.4 DFA的化简2.4 从正规式到有限自动机2.5 词法分析器的生成器第3章语法分析3.1 上下文无关文法3.1.1上下文无关文法的定义3.1.2 推导3.1.3 分析树3.1.4 二义性3.2 语言和文法3.2.1 正规式和上下文无关文法的比较3.2.2分离词法分析器的理由3.2.3 验证文法产生的语言3.2.4 适当的表达式文法3.2.5 消除二义性3.2.6 消除左递归3.2.7 提左因子3.2.8 非上下文无关的语言结构3.2.9 形式语言鸟瞰3.3 自上而下分析3.3.1 自上而下分析的一般方法3.3.2 LL(1)文法3.3.3 递归下降的预测分析3.3.4 非递归的预测分析3.3.5 构造预测分析表3.3.6 预测分析的错误恢复3.4 自下而上分析3.4.1 归约3.4.2 句柄3.4.3 用栈实现移进-归约分析3.4.4 移进-归约分析的冲突3.5 LR分析器3.5.1 LR分析算法3.5.2 LR文法和LR分析方法的特点3.5.3 构造SLR分析表3.5.4 构造规范的LR分析表3.5.5 构造LALR分析表3.5.6 非LR的上下文无关结构3.6 二义文法的应用3.6.1 使用文法以外的信息来解决分析动作的冲突3.6.2特殊情况产生式引起的二义性3.6.3 LR分析的错误恢复3.7 分析器的生成器3.7.1 分析器的生成器Yacc3.7.2 用Yacc处理二义文法3.7.3 Yacc的错误恢复第4章语法制导的翻译4.1 语法制导的定义4.1.1 语法制导定义的形式4.1.2 综合属性4.1.3 继承属性4.1.4 属性依赖图4.1.5 属性计算次序4.2 S属性定义的自下而上计算4.2.1 语法树4.2.2 构造语法树的语法制导定义4.2.3 S属性的自下而上计算4.3 L属性定义的自上而下计算4.3.1 L属性定义4.3.2 翻译方案4.3.3 预测翻译器的设计4.3.4 用综合属性代替继承属性4.4 L属性的自下而上计算4.4.1 删除翻译方案中嵌入的动作4.4.2 分析栈上的继承属性4.4.3 模拟继承属性的计算4.5 递归计算4.5.1 自左向右遍历4.5.2 其他遍历方法4.5.3 多次遍历第5章类型检查5.1 类型在程序设计语言中的作用5.1.1 引言5.1.2 执行错误和安全语言5.1.3 类型化语言的优点5.2 描述类型系统的语言5.2.1 定型断言5.2.2 定型规则5.2.3 类型检查和类型推断5.3 简单类型检查器的说明5.3.1 一个简单的语言5.3.2 类型系统5.3.3 类型检查5.3.4 类型转换*5.4 多态函数5.4.1 为什么要使用多态函数5.4.2 类型变量5.4.3 一个含多态函数的语言5.4.4 代换、实例和合一5.4.5 多态函数的类型检查5.5 类型表达式的等价5.5.1 类型表达式的结构等价5.5.2 类型表达式的名字等价5.5.3 记录类型5.5.4 类型表示中的环5.6 函数和算符的重载5.6.1 子表达式的可能类型集合5.6.2 缩小可能类型的集合第6章运行时存储空间的组织和管理6.1 局部存储分配策略6.1.1 过程6.1.2 名字的作用域和绑定6.1.3 活动记录6.1.4 局部数据的安排6.1.5 程序块6.2 全局存储分配策略6.2.1 运行时内存的划分6.2.2 静态分配6.2.3 栈式分配6.2.4 堆式分配6.3 非局部名字的访问6.3.1 无过程嵌套的静态作用域6.3.2 有过程嵌套的静态作用域6.3.3 动态作用域6.4 参数传递6.4.1值调用6.4.2 引用调用6.4.3 复写-恢复调用6.4.4 换名调用第7章中间代码生成7.1 中间语言7.1.1 后缀表示7.1.2 图形表示7.1.3 三地址代码7.2 声明语句7.2.1 过程中的声明7.2.2 作用域信息的保存7.2.3 记录的域名7.3 赋值语句7.3.1 符号表中的名字7.3.2 临时名字的重新使用7.3.3 数组元素的地址计算7.3.4 数组元素地址计算的翻译方案7.3.5 类型转换7.4 布尔表达式和控制流语句7.4.1 布尔表达式的翻译7.4.2 控制流语句的翻译7.4.3 布尔表达式的控制流翻译7.4.4 开关语句的翻译7.4.5 过程调用的翻译第8章代码生成8.1 代码生成器设计中的问题8.1.1 目标程序8.1.2 指令选择8.1.3 寄存器分配8.1.4 计算次序选择8.2 目标机器8.2.1 目标机器的指令系统8.2.2 指令的代价8.3 基本块和流图8.3.1 基本块8.3.2 基本块的变换8.3.3 流图8.3.4 下次引用信息8.4 一个简单的代码生成器8.4.1 寄存器描述和地址描述8.4.2 代码生成算法8.4.3 寄存器选择函数8.4.4 为变址和指针语句产生代码8.4.5 条件语句*第9章代码优化9.1 优化的主要种类9.1.1 代码改进变换的标准9.1.2 公共子表达式删除9.1.3 复写传播9.1.4 死代码删除9.1.5 代码外提9.1.6 强度削弱和归纳变量删除9.1.7 优化编译器的组织9.2 流图中的循环9.2.1 必经结点9.2.2 自然循环9.2.3 前置结点9.2.4 可归约流图9.3 全局数据流分析介绍9.3.1 点和路径9.3.2 到达-定值9.3.3 可用表达式9.3.4 活跃变量分析9.4 代码改进变换9.4.1公共子表达式删除9.4.2复写传播9.4.3 寻找循环不变计算9.4.4 代码外提9.4.5 归纳变量删除第10章编译系统和运行系统10.1 C语言的编译系统10.1.1 预处理器10.1.2 汇编器10.1.3 连接器10.1.4 目标文件的格式10.1.5 符号解析10.1.6 静态库10.1.7 可执行目标文件及装入10.1.8 动态连接10.1.9 处理目标文件的一些工具10.2 Java语言的运行系统10.2.1 Java虚拟机语言简介10.2.2 Java虚拟机10.2.3即时编译器*10.3 无用单元收集10.3.1 标记和清扫10.3.2 引用计数10.3.3 拷贝收集10.3.4 分代收集10.3.5 渐增式收集10.3.6 编译器与收集器之间的相互影响*第11章面向对象语言的编译11.1 面向对象语言的概念11.1.1 对象和对象类11.1.2 继承11.1.3 信息封装11.2 方法的编译11.3 继承的编译方案11.3.1 单一继承的编译方案11.3.2 重复继承的编译方案*第12章函数式语言的编译12.1 函数式程序设计语言简介12.1.1 语言构造12.1.2 参数传递机制12.1.3 变量的自由出现和约束出现12.2 函数式语言的编译简介12.2.1 几个受启发的例子12.2.2 编译函数12.2.3 环境与约束12.3 抽象机的系统结构12.3.1 抽象机的栈12.3.2 抽象机的堆12.3.3 名字的寻址12.3.4 约束的建立12.4 指令集和编译12.4.1 表达式12.4.2 变量的引用性出现12.4.3 函数定义12.4.4 函数应用12.4.5 构造和计算闭包12.4.6 letrec表达式和局部变量整理丨尼克本文档信息来自于网络,如您发现内容不准确或不完善,欢迎您联系我修正;如您发现内容涉嫌侵权,请与我们联系,我们将按照相关法律规定及时处理。
三体第十二章概括
汪淼穿上VR装备再次登录《三体》游戏。
游戏里遇到了一个人物叫墨子,墨子认出了汪淼的角色,告诉他在他离开的这段时间,文明重新启动了4次,在乱纪元和恒纪元的混乱交替中,139号文明创造了纪录走到了蒸汽时代。
墨子造了一个精巧的宇宙模型机器,模拟三个太阳的运行,他认为自己找到了规律,而且觉得汪淼总提的“飞星”只是意外,不必在意。
但最后果然如汪淼所说,墨子的推理仍然是错误的,巨大的烈焰吞噬了这个文明,游戏结束。
三体第一部第八章标题是叶文洁,主要讲述了汪淼通过VR游戏了解到《三体》的海量信息是隐藏在深处的,汪淼能感觉到,但说不清。
《三体》的不寻常在于,与其他的游戏相比,它的设计者是反其道而行之——一般游戏的设计者都是尽可能地增加显示的信息量,以产生真实感:但《三体》的设计者却是在极力压缩信息量,以隐藏某种巨大的真实,就像那张看似空旷的天空照片。
然后汪淼去拜访了杨冬的母亲叶文洁,参观了杨冬的房间,与叶文洁一起回忆杨冬活着时从小到大的一点一滴,最后还向杨母了解了观测宇宙背景辐射的事。
三体第一部第9章内容梗概:叶文洁遭受迫害下放大兴安岭,来到红岸基地,并于1971年秋天的一个下午向太阳发射信号,将电波传播到宇宙深处。
马可福章12章逐节解释篇一:马可福章(Markus Fuchs)是一位德国化学家,他在20世纪60年代开始研究碳纳米管。
他于1969年发表了第一篇关于碳纳米管的研究论文,并在此后的几十年里持续深入研究,成为了碳纳米管领域的先驱者和重要人物之一。
以下是马可福章的12章逐节解释,包括了碳纳米管的基本概念、物理性质、制备方法、表征方法等方面的内容。
第一章:碳纳米管的概念本章介绍了碳纳米管的概念和定义。
碳纳米管是一种由碳原子组成的多孔、多裂缝的碳材料,其直径通常只有几个到几十纳米。
碳纳米管具有许多独特的物理和化学性质,如高比表面积、强大的机械强度、优异的导电性、热稳定性等,因此在纳米材料研究领域具有广泛的应用前景。
第二章:碳纳米管的结构和形态本章介绍了碳纳米管的结构和形态。
碳纳米管通常由一个碳原子的孤对电子与相邻的碳原子形成共价键,形成多孔、多裂缝的碳材料。
碳纳米管的形态包括晶体形态、树枝状形态、球状形态等。
其中,晶体形态是碳纳米管最常见的形态,树枝状形态和球状形态也可以通过控制碳纳米管的结构和尺寸来实现。
第三章:碳纳米管的制备方法本章介绍了碳纳米管的制备方法。
碳纳米管的制备方法包括化学气相沉积、物理气相沉积、电化学沉积、化学溶解法等。
其中,化学气相沉积是最常用的制备方法之一,它通过将碳材料溶解在沉积剂中,然后通过气相沉积技术将其沉积到基材表面。
第四章:碳纳米管的表征方法本章介绍了碳纳米管的表征方法。
碳纳米管的表征方法包括光学显微镜、电子显微镜、X射线衍射、核磁共振、激光扫描隧道显微镜等。
其中,光学显微镜是最常用的表征方法之一,它可以通过观察碳纳米管的孔径、结构、形态等特征来评估碳纳米管的质量和尺寸。
篇二:马可福章(Markus Fuchs)是德国著名的数学家和物理学家,他在数学和物理学领域做出了许多杰出的贡献。
以下是他第12章逐节解释的内容。
第1节:基本几何学这一章主要介绍了几何学的基本概念和定理。
马可福章指出,几何学是物理学的基础,因为它提供了描述自然现象的一种重要工具。
数据结构考研笔记整理(全)一、第二章线性表●考纲内容●一、线性表的基本概念●线性表是具有相同数据结构类型的n个数据元素的有限序列;线性表为逻辑结构,实现线性表的存储结构为顺序表或者链表●二、线性表的实现●1、顺序表●定义(静态分配)●#define MaxSize 50 \\ typedef struct{ \\ ElemType data[MaxSize];\\ intlength;\\ }SqList;●定义(动态分配)●#define MaxSize 50\\ typedef strcut{\\ EleType *data; //指示动态非配数组的指针\\ int MaxSize,length;\\ }SqList;●c的动态分配语句为L.data=(ElemType*)malloc(sizeof(ElemType)*InitSize);●c++动态分配语句为L.data=new ElemType[InitSize];●插入操作●删除操作●按值寻找●2、链表●单链表●单链表的定义●●头插法建立单链表●●尾插法建立单链表●●按序号查找getElem(LinkList L,int i)和按值查找locateElem(LinkListL,ElemType e)●插入结点(后插)●p=getElem(L,i-1); //查找插入位置的前驱结点\\ s.next=p.next;\\p.next=s;●将前插操作转化为后插操作,即先将s插入的p的后面然后调换s和p的数据域●s.next=p.next;\\ p.next=s.next;\\ temp=p.data;\\ p.data=s.data;\\s.data=temp;●删除结点●p.getElem(L,i-1);\\ q=p.next;\\ p.next=q.next;\\ free(q);●双链表(结点中有prior指针和next指针)●循环链表●静态链表●借助数组来描述线性表的链式存储结构,结点中的指针域next为下一个元素的数组下标●三、线性表的应用●使用的时候如何选择链表还是顺序表?●表长难以估计,经常需要增加、删除操作——链表;表长可以估计,查询比较多——顺序表●链表的头插法,尾插法,逆置法,归并法,双指针法;顺序表结合排序算法和查找算法的应用●小知识点(选择题)二、第三章栈,队列和数组●考纲内容●一、栈和队列的基本概念●栈:后进先出,LIFO,逻辑结构上是一种操作受限的线性表●队列:先进先出,FIFO,逻辑结构上也是一种操作受限的线性表●二、栈和队列的顺序存储结构●栈的顺序存储●●队列的顺序存储●进队:队不满时,送值到队尾元素,再将队尾指针加一●出队:队不空时,取队头元素值,再将队头指针加一●判断队空:Q.front==Q.rear==0;●循环队列(牺牲一个单元来区分队空和队满,尾指针指向队尾元素的后一个位置,也就是即将要插入的位置)●初始:Q.front==Q.rear●队满:(Q.rear+1)%MaxSize=Q.front●出队,队首指针进1:Q.front=(Q.front+1)%MaxSize●入队,队尾指针进1:Q.rear=(Q.rear+1)%MaxSize●队列长度:(Q.rear+MaxSize-Q.front)%MaxSize●三、栈和队列的链式存储结构●栈的链式存储●●队列的链式存储●实际是上一个同时带有头指针和尾指针的单链表,尾指针指向单链表的最后一个结点,与顺序存储不同,通常带有头结点●四、多维数组的存储●行优先:00,01,02,10,11,12●列优先:00,10,01,11,02,12●五、特殊矩阵的压缩存储●对称矩阵●三角矩阵●三对角矩阵(带状矩阵)●稀疏矩阵●将非零元素及其相应的行和列构成一个三元组存储●十字链表法●六、栈、队列、数组的应用●栈在括号匹配中的应用●栈在递归中的应用●函数在递归调用过程中的特点:最后被调用的函数最先执行结束●队列在层次遍历中的应用●二叉树的层次遍历●1跟结点入队●2若队空,则结束遍历,否则重复3操作●3队列中的第一个结点出队并访问,若有左孩子,则左孩子入队;若有右孩子,则右孩子入队●重点为栈的(出入栈过程、出栈序列的合法性)和队列的操作及其特征●小知识点(选择题)●n个不同元素进栈,出栈元素不同排列的个数为{2n\choose n }/(n+1)●共享栈是指让两个顺序栈共享一个存储空间,将两个栈的栈底分别设置在共享空间的两端,两个栈顶向共享空间的中间延伸,可以更有效的利用存储空间,同时对存储效率没有什么影响●双端队列是指允许两端都可以进行入队和出队操作的队列●输出受限的双端队列:允许两端插入,只允许一端删除●输入受限的双端队列:允许两端删除,只允许一端插入三、第四章串●考纲内容●字符串模式匹配●暴力算法●注意指针回退时的操作是i=i-j+2;j=j+1;●kmp算法●手工求next数组时,next[j]=s的最长相等前后缀长度+1,其中s为1到j-1个字符组成的串●在实际kmp算法中,为了使公式更简洁、计算简单,如果串的位序是从1开始的,则next数组需要整体加一;如果串的位序是从0开始的,则next数组不需要加一●根据next数组求解nextval数组:如果p[j]==p[next[j]],则nextval[j]=nextval[next[j]],否则nextval[j]=next[j];●小知识点●串和线性表的区别:1线性表的数据元素可以不同,但串的数据元素一般是字符;2串的操作对象通常是子串而不是某一个字符四、第五章树与二叉树●考纲内容●一、树的基本概念●定义●树是一种递归的数据结构,是一种逻辑结构●树的性质●结点数为n,则边的数量为n-1●树中的结点数等于所有结点的度数之和加1(一个结点的孩子个数称为该结点的度,树中结点的最大度数称为树的度,每一条边表示一个结点,对应一个度,只有根结点上面无边,故结点树=度数之和+1)●度为m的树中第i层至多有m^{i-1}个结点(i\geq1)(m叉树的第i层最多有m^{i-1}个结点)●高度为h的m叉树至多有(m^h-1)/(m-1)个结点(假设每一个结点都有m个孩子,则由等比数列的求和公式可以推导出该式子)●具有n个结点的m叉树的最小高度是\lceil log_m(n(m-1)+1)\rceil(由高度为h的m叉树的最大结点树公式有,n满足式子(m^{h-1}-1)/(m-1) \leq n\leq (m^h-1)/(m-1))●高度为h的m叉树至少有h个结点;高为h,度为m的树至少有h+m-1个结点(m叉树并不等于度为m的树,m叉树可以为空树,要求所有结点的度小于等于m,而度为m的树一定有一个结点的度数为m)●二、二叉树●二叉树的定义及其主要特征●定义●特点●每个结点至多只有两颗子树●二叉树是有序树,其子树有左右之分,次序不能颠倒,否则将成为另一颗二叉树,即使树中结点只有一颗子树,也要区分他是左子树还是右子树●特殊的二叉树●满二叉树:高度为h,结点数为2^h-1,所有叶子结点都集中在二叉树的最下面一层,除叶子结点外的所有结点度数都为2,从根结点为1开始编号,对于编号为i的结点,其父结点为\lfloor i/2 \rfloor,左孩子(若有)编号为2i,右孩子(若有)编号为2i+1,所以编号为偶数的结点只可能是左孩子,编号为奇数的结点只可能是右孩子●完全二叉树:删除了满二叉树中编号更大的结点,高为h,结点数为n的完全二叉树的每个结点的编号都与高度为h的满二叉树中编号为1到n的结点相同。
实用标准文案ACM培训大纲基础内容:数据结构——》搜索——》图论DP数论博弈中级内容数据结构网络流第一章搜索1.二分搜索三分搜索2.栈3.队列4.深搜5,广搜6.第二章数据结构1.优先队列并查集2.二叉搜索树3.线段树(单点更新)4.5.精彩文档.实用标准文案第三章图论1.图的表示1.1二维数组1.2邻接表1.3前向星2.图的遍历2.1双连通分量2. 2拓扑排序3.最短路3.1迪杰斯特拉3. 2弗洛伊德4. 3 SPFA5.匹配匈牙利算法6.生成树7.网络流简介第四章动态规划1.状态转移方程2.引入3. 1 0-1背包4.2硬币问题5. 3矩阵链乘6.区间DP7.按位DP8.树形DP9.状压DP第五章数论1.欧几里得扩展欧几里得2.因数分解3. 费马小定理4.欧拉定理5.6.1筛法6. 2素数判定6. 2,1 0(Jn)方法精彩文档.实用标准文案6. 2. 2 Mi I ler-rabin 测试第六章博弈1.Nim 和2.SG函数第七章中级数据结构1.树状数组RMO 2.KMP3.AC自动机4.线段树(区间更新)5.第八章图论进阶1.网络流问题精彩文档.实用标准文案综述在很多人眼里,东北大学秦皇岛分校不算是985高校。
所以我们要用自己的能力证明我们有985 的实力。
ACM是计算机界认可度最高的一个比赛,可以说只要区域赛有过奖牌,国内任何IT公司没有理由不要。
同时,在高校之中,对一个大学计算机专业的评价,大部分人也会首先看ACM 的水平。
将ACM打出学校,在国内打出一定成绩,对扩大我校影响力很有帮助。
考虑到本校暂时没有进行专题训练的出题能力,专题训练的题目主要从UESTC 2014年集训队专题训练中获取,再加上从别的0J上找一些题目。
训练的平台设置在华中科技大学的vertual judge上面。
本人将在毕业之前承担培训任务。
在2015学年开始之前,培训计划为每两周一次,中间空闲的时间由大二或者大一熟悉C++的同学给不熟悉C++的同学进行基础的讲解。
海底两万里12章概括主要内容
《海底两万里》是法国作家儒勒·凡尔纳创作的科幻小说。
小说的故事主要发生在1866年,主人公是法国生物学家兼探险家阿龙纳斯。
小说分为12章,每章都讲述了阿龙纳斯与潜水员尼莫一起探索海底神秘世界的故事。
第一章介绍了作者凡尔纳的兴趣爱好,以及他在研究动物和植物方面的成果。
第二章介绍了尼莫的父亲是一名著名的潜水员,他们一起去深海寻找失踪的船只。
第三章介绍了海底的生态环境,包括海洋生物和海底地形。
第四章介绍了两个潜水员在海底洞穴里迷路,遇到了神秘的生物。
第五章介绍了两个潜水员被一只巨大的章鱼困住,他们利用工具破译了章鱼的密码。
第六章介绍了两个潜水员在海底森林中遇到了一群海豚,并与它们一起寻找食物。
第七章介绍了两个潜水员与一只巨大的鲸鱼相遇,他们一起探索鲸鱼的背部,并发现了一座神秘的海底城市。
第八章介绍了两个潜水员在海底草原上与一只巨大的龙虾相遇,他们一起去追逐龙虾,并意外发现了一艘古老的船只。
第九章介绍了两个潜水员在海底火山口与一只巨大的海龟相遇,他们一起去探索火山的洞穴。
第十章介绍了两个潜水员被困在一个神秘的海底实验室中,他们需要帮助才能逃脱。
第十一章介绍了两个潜水员与一只神秘的生物相遇,他们一起探索了深海,并最终回到人间。
第十二章介绍了两个潜水员在返航途中遇到了一些困难,但他们最终成功回到了岸边。
算法导论读书笔记【篇一:《算法概论》读书笔记及读后感】《算法概论》读书笔记12计转1 12130907 李酉辰第0章本章较为简短,没有深入系统地涉及某些内容。
主要以fibonacci 数列的例子,让我体会了递归和递推思想的差别。
针对fibonacci数列例子直接递归解法中涉及的重复计算,优化出递推方式,展示了思考问题中自顶向下与自底向上的不同思考角度可能产生较大的算法效率差别,同时隐约体现记忆化搜索的思想。
另外本章较为详细介绍了大o复杂度度量标准。
第1章本章以rsa算法为例,细致深入讨论了rsa算法涉及的相关数论知识,诸如取模运算、模下的四则运算与逆元概念、取模幂运算、素性检测。
在素性检测部分有经典的欧几里德算法、扩展欧几里德算法,同时引入随机化算法概念,以极高的概率保证素性检测有效性。
通过本章的学习,我对过去不曾深入考虑或者说真正考虑的基础性运算有了更深的理解。
之前对乘除运算复杂度总是在以单元操作的概念下以o(1)带过,以后会更加细致地考虑乘除等基本运算的复杂度。
另外,本章以rsa为案例,系统地展示了针对某一问题,如何从基础性知识入手,一步一步学习案例所需基础知识,并将其整合从而解决案例。
素性检测与素因子分解,两个看似相去不远的问题,其复杂性天差地别的现实,从一般角度让人们想到的是类似问题的解决难度可能差别很大仅此而已,而rsa算法展示了如何深入的多想一步,利用这种情况设计出优雅的解决方案。
这思想很值得我借鉴与利用。
第2章本章介绍分治算法思想,提及分治,相信每一个学习算法的人都不会陌生,经典的《算法导论》中就已合并排序为例在开篇不久就引入分治概念。
本书介绍分治的角度与众不同,不似《导论》中总是介绍比较显而易见的可以分治的案例。
本书列举了矩阵相乘、快速傅立叶变换等数学领域分治的应用案例,在这些案例之中,分治的应用很多情况下隐藏的较为深,并非显而易见,加大了分析难度。
但是更能让我感受到分治应用之广泛,可能在学习本章之前,许多类型的题目我不会想到去向分治的角度思考,因为不易看出,但是本章给我的备忘录上加了一条:永远不要忽视分治,针对陌生题目,不要轻易就否决掉往分治角度思考的路线。
windows7怎么自动关机如果想设置Win7按照自己意愿自动关机,而又不希望下载安装第三方软件,那么windows7怎么自动关机呢?今天店铺与大家分享下windows7设置自动关机的具体操作步骤,有需要的朋友不妨了解下。
windows7设置自动关机方法一、使用命令1、设置特定时间关机假设我们设置系统在晚上11点关闭,按下“Windows徽标键+R”,在弹出的“运行”窗口中输入“at 23:00 shutdown -s”,按下回车键即可。
在系统关闭前一分钟,会弹出提醒窗口。
注意:上述命令包含3个空格,不含引号。
在命令符窗口输入命令也会达到相同效果。
使用此命令时,计划服务必须在运行中。
命令详解:•“at”命令安排在特定日期和时间运行命令和程序•“23:00”处指定了运行命令的时间。
格式为24小时制•“shutdown”为系统内置的一个命令,我们可以配合它的参数对系统进行关机、重启等操作• “-s”是“shutdown”命令的一个参数,运行“sh utdown -s”代表“关闭计算机”的操作。
常见参数还有“-a”“-t”“-f”等▼运行效果图(下为命令输入示例,上为弹出窗口示例;命令输入后“运行”窗口会自动关闭,两个窗口并不会同时出现)。
2、设置一段时间后关机设置系统在一段时间后关闭,我们会用到“shutdown”命令的一个新参数“-t”。
这个参数指定系统在一段特定的时间后关闭,单位为秒(s)。
此处我们以设置系统半小时后关闭为例,需要输入的命令为:“shutdown -s -t 1800”,上述命令包含3个空格,不含引号。
运行后系统任务栏右下角会弹出提醒窗口。
▼运行效果图(上为命令输入示例,下为弹出窗口示例;命令输入后“运行”窗口会自动关闭,两个窗口并不会同时出现)。
这两个操作均会分别生成一个计划任务,我们用软媒优化大师可以查看,具体在“启动项”标签页的“计划任务”中。
例如我们运行了一次设置特定时间关机的命令,在“软件名称”栏中,会增加一个显示为“At1 Windows关闭和注释工具”的项目。
第二章 容斥原理与鸽巢原理1、1到10000之间(不含两端)不能被4,5和7整除的整数有多少个? 解 令A={1,2,3,…,10000},则 |A|=10000.记A 1、A 2、A 3分别为在1与1000之间能被4,5和7整除的整数集合,则有:|A 1| = L 10000/4」=2500,|A 2| = L 10000/5」=2000,|A 3| = L 10000/7」=1428,于是A 1∩A 2 表示A 中能被4和5整除的数,即能被20 整除的数,其个数为| A 1∩A 2|=L 10000/20」=500;同理, | A 1∩A 3|=L 10000/28」=357,| A 2∩A 3|=L 10000/35」=285,A 1 ∩A 2 ∩ A 3 表示A 中能同时被4,5,7整除的数,即A 中能被4,5,7的最小公倍数lcm(4,5,6)=140整除的数,其个数为| A 1∩A 2∩A 3|=L 10000/140」= 71.由容斥原理知,A 中不能被4,5,7整除的整数个数为||321A A A ⋂⋂= |A| - (|A 1| + |A 2| +|A 3|) + (|A 1∩A 2| + |A 1∩A 3| +|A 3∩A 2|) - |A 1∩A 2∩A 3| = 51432、1到10000之间(不含两端)不能被4或5或7整除的整数有多少个? 解 令A={1,2,3,…,10000},记A 1、A 2、A 3分别为在1与1000之间能被4,5和7整除的整数集合,A 中不能被4,5,7整除的整数个数为||321A A A ⋃⋃ = |A| - ||321A A A ⋂⋂ - 2 = 10000 - L 10000/140」- 2 = 99273、1到10000之间(不含两端)能被4和5整除,但不能被7整除的整数有多少个?解 令A 1表示在1与10000之间能被4和5整除的整数集,A 2表示4和5整除,也能被7整除的整数集。
第1章算法引论11.1 算法与程序11.2 表达算法的抽象机制11.3 描述算法31.4 算法复杂性分析13小结16习题17第2章递归与分治策略192.1 递归的概念192.2 分治法的基本思想262.3 二分搜索技术272.4 大整数的乘法282.5 Strassen矩阵乘法302.6 棋盘覆盖322.7 合并排序342.8 快速排序372.9 线性时间选择392.10 最接近点对问题432.11 循环赛日程表53小结54习题54第3章动态规划613.1 矩阵连乘问题62目录算法设计与分析(第2版)3.2 动态规划算法的基本要素67 3.3 最长公共子序列713.4 凸多边形最优三角剖分753.5 多边形游戏793.6 图像压缩823.7 电路布线853.8 流水作业调度883.9 0-1背包问题923.10 最优二叉搜索树98小结101习题102第4章贪心算法1074.1 活动安排问题1074.2 贪心算法的基本要素1104.2.1 贪心选择性质1114.2.2 最优子结构性质1114.2.3 贪心算法与动态规划算法的差异1114.3 最优装载1144.4 哈夫曼编码1164.4.1 前缀码1174.4.2 构造哈夫曼编码1174.4.3 哈夫曼算法的正确性1194.5 单源最短路径1214.5.1 算法基本思想1214.5.2 算法的正确性和计算复杂性123 4.6 最小生成树1254.6.1 最小生成树性质1254.6.2 Prim算法1264.6.3 Kruskal算法1284.7 多机调度问题1304.8 贪心算法的理论基础1334.8.1 拟阵1334.8.2 带权拟阵的贪心算法1344.8.3 任务时间表问题137小结141习题141第5章回溯法1465.1 回溯法的算法框架1465.1.1 问题的解空间1465.1.2 回溯法的基本思想1475.1.3 递归回溯1495.1.4 迭代回溯1505.1.5 子集树与排列树1515.2 装载问题1525.3 批处理作业调度1605.4 符号三角形问题1625.5 n后问题1655.6 0\|1背包问题1685.7 最大团问题1715.8 图的m着色问题1745.9 旅行售货员问题1775.10 圆排列问题1795.11 电路板排列问题1815.12 连续邮资问题1855.13 回溯法的效率分析187小结190习题191第6章分支限界法1956.1 分支限界法的基本思想1956.2 单源最短路径问题1986.3 装载问题2026.4 布线问题2116.5 0\|1背包问题2166.6 最大团问题2226.7 旅行售货员问题2256.8 电路板排列问题2296.9 批处理作业调度232小结237习题238第7章概率算法2407.1 随机数2417.2 数值概率算法2447.2.1 用随机投点法计算π值2447.2.2 计算定积分2457.2.3 解非线性方程组2477.3 舍伍德算法2507.3.1 线性时间选择算法2507.3.2 跳跃表2527.4 拉斯维加斯算法2597.4.1 n 后问题2607.4.2 整数因子分解2647.5 蒙特卡罗算法2667.5.1 蒙特卡罗算法的基本思想2667.5.2 主元素问题2687.5.3 素数测试270小结273习题273第8章 NP完全性理论2788.1 计算模型2798.1.1 随机存取机RAM2798.1.2 随机存取存储程序机RASP2878.1.3 RAM模型的变形与简化2918.1.4 图灵机2958.1.5 图灵机模型与RAM模型的关系297 8.1.6 问题变换与计算复杂性归约299 8.2 P类与NP类问题3018.2.1 非确定性图灵机3018.2.2 P类与NP类语言3028.2.3 多项式时间验证3048.3 NP完全问题3058.3.1 多项式时间变换3058.3.2 Cook定理3078.4 一些典型的NP完全问题3108.4.1 合取范式的可满足性问题3118.4.2 3元合取范式的可满足性问题312 8.4.3 团问题3138.4.4 顶点覆盖问题3148.4.5 子集和问题3158.4.6 哈密顿回路问题3178.4.7 旅行售货员问题322小结323习题323第9章近似算法3269.1 近似算法的性能3279.2 顶点覆盖问题的近似算法3289.3 旅行售货员问题近似算法3299.3.1 具有三角不等式性质的旅行售货员问题330 9.3.2 一般的旅行售货员问题3319.4 集合覆盖问题的近似算法3339.5 子集和问题的近似算法3369.5.1 子集和问题的指数时间算法3369.5.2 子集和问题的完全多项式时间近似格式337 小结340习题340第10章算法优化策略34510.1 算法设计策略的比较与选择34510.1.1 最大子段和问题的简单算法34510.1.2 最大子段和问题的分治算法34610.1.3 最大子段和问题的动态规划算法34810.1.4 最大子段和问题与动态规划算法的推广349 10.2 动态规划加速原理35210.2.1 货物储运问题35210.2.2 算法及其优化35310.3 问题的算法特征35710.3.1 贪心策略35710.3.2 对贪心策略的改进35710.3.3 算法三部曲35910.3.4 算法实现36010.3.5 算法复杂性36610.4 优化数据结构36610.4.1 带权区间最短路问题36610.4.2 算法设计思想36710.4.3 算法实现方案36910.4.4 并查集37310.4.5 可并优先队列37610.5 优化搜索策略380小结388习题388第11章在线算法设计39111.1 在线算法设计的基本概念39111.2 页调度问题39311.3 势函数分析39511.4 k 服务问题39711.4.1 竞争比的下界39711.4.2 平衡算法39911.4.3 对称移动算法39911.5 Steiner树问题40311.6 在线任务调度40511.7 负载平衡406小结407习题407词汇索引409参考文献415习题1-1 实参交换1习题1-2 方法头签名1习题1-3 数组排序判定1习题1-4 函数的渐近表达式2习题1-5 O(1) 和 O(2) 的区别2习题1-7 按渐近阶排列表达式2习题1-8 算法效率2习题1-9 硬件效率3习题1-10 函数渐近阶3习题1-11 n !的阶4习题1-12 平均情况下的计算时间复杂性4算法实现题1-1 统计数字问题4算法实现题1-2 字典序问题5算法实现题1-3 最多约数问题6算法实现题1-4 金币阵列问题8算法实现题1-5 最大间隙问题11第2章递归与分治策略14 习题2-1 Hanoi 塔问题的非递归算法14习题2-2 7个二分搜索算法15习题2-3 改写二分搜索算法18习题2-4 大整数乘法的 O(nm log(3/2))算法19习题2-5 5次 n /3位整数的乘法19习题2-6 矩阵乘法21习题2-7 多项式乘积21习题2-8 不动点问题的 O( log n) 时间算法22习题2-9 主元素问题的线性时间算法22习题2-10 无序集主元素问题的线性时间算法22习题2-11 O (1)空间子数组换位算法23习题2-12 O (1)空间合并算法25习题2-13 n 段合并排序算法32习题2-14 自然合并排序算法32习题2-15 最大值和最小值问题的最优算法35习题2-16 最大值和次大值问题的最优算法35习题2-17 整数集合排序35习题2-18 第 k 小元素问题的计算时间下界36习题2-19 非增序快速排序算法37习题2-20 随机化算法37习题2-21 随机化快速排序算法38习题2-22 随机排列算法38习题2-23 算法qSort中的尾递归38习题2-24 用栈模拟递归38习题2-25 算法select中的元素划分39习题2-26 O(n log n) 时间快速排序算法40习题2-27 最接近中位数的 k 个数40习题2-28 X和Y 的中位数40习题2-29 网络开关设计41习题2-32 带权中位数问题42习题2-34 构造Gray码的分治算法43习题2-35 网球循环赛日程表44目录算法设计与分析习题解答(第2版)算法实现题2-1 输油管道问题(习题2-30) 49算法实现题2-2 众数问题(习题2-31) 50算法实现题2-3 邮局选址问题(习题2-32) 51算法实现题2-4 马的Hamilton周游路线问题(习题2-33) 51算法实现题2-5 半数集问题60算法实现题2-6 半数单集问题62算法实现题2-7 士兵站队问题63算法实现题2-8 有重复元素的排列问题63算法实现题2-9 排列的字典序问题65算法实现题2-10 集合划分问题(一)67算法实现题2-11 集合划分问题(二)68算法实现题2-12 双色Hanoi塔问题69算法实现题2-13 标准二维表问题71算法实现题2-14 整数因子分解问题72算法实现题2-15 有向直线2中值问题72第3章动态规划76习题3-1 最长单调递增子序列76习题3-2 最长单调递增子序列的 O(n log n) 算法77习题3-7 漂亮打印78习题3-11 整数线性规划问题79习题3-12 二维背包问题80习题3-14 Ackermann函数81习题3-17 最短行驶路线83习题3-19 最优旅行路线83算法实现题3-1 独立任务最优调度问题(习题3-3) 83算法实现题3-2 最少硬币问题(习题3-4) 85算法实现题3-3 序关系计数问题(习题3-5) 86算法实现题3-4 多重幂计数问题(习题3-6) 87算法实现题3-5 编辑距离问题(习题3-8) 87算法实现题3-6 石子合并问题(习题3-9) 89算法实现题3-7 数字三角形问题(习题3-10) 91算法实现题3-8 乘法表问题(习题3-13) 92算法实现题3-9 租用游艇问题(习题3-15) 93算法实现题3-10 汽车加油行驶问题(习题3-16) 95算法实现题3-11 圈乘运算问题(习题3-18) 96算法实现题3-12 最少费用购物(习题3-20) 102算法实现题3-13 最大长方体问题(习题3-21) 104算法实现题3-14 正则表达式匹配问题(习题3-22) 105算法实现题3-15 双调旅行售货员问题(习题3-23) 110算法实现题3-16 最大 k 乘积问题(习题5-24) 111算法实现题3-17 最小 m 段和问题113算法实现题3-18 红黑树的红色内结点问题115第4章贪心算法123 习题4-2 活动安排问题的贪心选择123习题4-3 背包问题的贪心选择性质123习题4-4 特殊的0-1背包问题124习题4-10 程序最优存储问题124习题4-13 最优装载问题的贪心算法125习题4-18 Fibonacci序列的Huffman编码125习题4-19 最优前缀码的编码序列125习题4-21 任务集独立性问题126习题4-22 矩阵拟阵126习题4-23 最小权最大独立子集拟阵126习题4-27 整数边权Prim算法126习题4-28 最大权最小生成树127习题4-29 最短路径的负边权127习题4-30 整数边权Dijkstra算法127算法实现题4-1 会场安排问题(习题4-1) 128算法实现题4-2 最优合并问题(习题4-5) 129算法实现题4-3 磁带最优存储问题(习题4-6) 130算法实现题4-4 磁盘文件最优存储问题(习题4-7) 131算法实现题4-5 程序存储问题(习题4-8) 132算法实现题4-6 最优服务次序问题(习题4-11) 133算法实现题4-7 多处最优服务次序问题(习题4-12) 134算法实现题4-8 d 森林问题(习题4-14) 135算法实现题4-9 汽车加油问题(习题4-16) 137算法实现题4-10 区间覆盖问题(习题4-17) 138算法实现题4-11 硬币找钱问题(习题4-24) 138算法实现题4-12 删数问题(习题4-25) 139算法实现题4-13 数列极差问题(习题4-26) 140算法实现题4-14 嵌套箱问题(习题4-31) 140算法实现题4-15 套汇问题(习题4-32) 142算法实现题4-16 信号增强装置问题(习题5-17) 143算法实现题4-17 磁带最大利用率问题(习题4-9) 144算法实现题4-18 非单位时间任务安排问题(习题4-15) 145算法实现题4-19 多元Huffman编码问题(习题4-20) 147算法实现题4-20 多元Huffman编码变形149算法实现题4-21 区间相交问题151算法实现题4-22 任务时间表问题151第5章回溯法153习题5\|1 装载问题改进回溯法(一)153习题5\|2 装载问题改进回溯法(二)154习题5\|4 0-1背包问题的最优解155习题5\|5 最大团问题的迭代回溯法156习题5\|7 旅行售货员问题的费用上界157习题5\|8 旅行售货员问题的上界函数158算法实现题5-1 子集和问题(习题5-3) 159算法实现题5-2 最小长度电路板排列问题(习题5-9) 160算法实现题5-3 最小重量机器设计问题(习题5-10) 163算法实现题5-4 运动员最佳匹配问题(习题5-11) 164算法实现题5-5 无分隔符字典问题(习题5-12) 165算法实现题5-6 无和集问题(习题5-13) 167算法实现题5-7 n 色方柱问题(习题5-14) 168算法实现题5-8 整数变换问题(习题5-15) 173算法实现题5-9 拉丁矩阵问题(习题5-16) 175算法实现题5-10 排列宝石问题(习题5-16) 176算法实现题5-11 重复拉丁矩阵问题(习题5-16) 179算法实现题5-12 罗密欧与朱丽叶的迷宫问题181算法实现题5-13 工作分配问题(习题5-18) 183算法实现题5-14 独立钻石跳棋问题(习题5-19) 184算法实现题5-15 智力拼图问题(习题5-20) 191算法实现题5-16 布线问题(习题5-21) 198算法实现题5-17 最佳调度问题(习题5-22) 200算法实现题5-18 无优先级运算问题(习题5-23) 201算法实现题5-19 世界名画陈列馆问题(习题5-25) 203算法实现题5-20 世界名画陈列馆问题(不重复监视)(习题5-26) 207 算法实现题5-21 部落卫队问题(习题5-6) 209算法实现题5-22 虫蚀算式问题211算法实现题5-23 完备环序列问题214算法实现题5-24 离散01串问题217算法实现题5-25 喷漆机器人问题218算法实现题5-26 n 2-1谜问题221第6章分支限界法229习题6-1 0-1背包问题的栈式分支限界法229习题6-2 用最大堆存储活结点的优先队列式分支限界法231习题6-3 团顶点数的上界234习题6-4 团顶点数改进的上界235习题6-5 修改解旅行售货员问题的分支限界法235习题6-6 解旅行售货员问题的分支限界法中保存已产生的排列树237 习题6-7 电路板排列问题的队列式分支限界法239算法实现题6-1 最小长度电路板排列问题一(习题6-8) 241算法实现题6-2 最小长度电路板排列问题二(习题6-9) 244算法实现题6-3 最小权顶点覆盖问题(习题6-10) 247算法实现题6-4 无向图的最大割问题(习题6-11) 250算法实现题6-5 最小重量机器设计问题(习题6-12) 253算法实现题6-6 运动员最佳匹配问题(习题6-13) 256算法实现题6-7 n 后问题(习题6-15) 259算法实现题6-8 圆排列问题(习题6-16) 260算法实现题6-9 布线问题(习题6-17) 263算法实现题6-10 最佳调度问题(习题6-18) 265算法实现题6-11 无优先级运算问题(习题6-19) 268算法实现题6-12 世界名画陈列馆问题(习题6-21) 271算法实现题6-13 骑士征途问题274算法实现题6-14 推箱子问题275算法实现题6-15 图形变换问题281算法实现题6-16 行列变换问题284算法实现题6-17 重排 n 2宫问题285算法实现题6-18 最长距离问题290第7章概率算法296习题7-1 模拟正态分布随机变量296习题7-2 随机抽样算法297习题7-3 随机产生 m 个整数297习题7-4 集合大小的概率算法298习题7-5 生日问题299习题7-6 易验证问题的拉斯维加斯算法300习题7-7 用数组模拟有序链表300习题7-8 O(n 3/2)舍伍德型排序算法300习题7-9 n 后问题解的存在性301习题7-11 整数因子分解算法302习题7-12 非蒙特卡罗算法的例子302习题7-13 重复3次的蒙特卡罗算法303习题7-14 集合随机元素算法304习题7-15 由蒙特卡罗算法构造拉斯维加斯算法305习题7-16 产生素数算法306习题7-18 矩阵方程问题306算法实现题7-1 模平方根问题(习题7-10) 307算法实现题7-2 集合相等问题(习题7-17) 309算法实现题7-3 逆矩阵问题(习题7-19) 309算法实现题7-4 多项式乘积问题(习题7-20) 310算法实现题7-5 皇后控制问题311算法实现题7-6 3-SAT问题314算法实现题7-7 战车问题315算法实现题7-8 圆排列问题317算法实现题7-9 骑士控制问题319算法实现题7-10 骑士对攻问题320第8章NP完全性理论322 习题8-1 RAM和RASP程序322习题8-2 RAM和RASP程序的复杂性322习题8-3 计算 n n 的RAM程序322习题8-4 没有MULT和DIV指令的RAM程序324习题8-5 MULT和DIV指令的计算能力324习题8-6 RAM和RASP的空间复杂性325习题8-7 行列式的直线式程序325习题8-8 求和的3带图灵机325习题8-9 模拟RAM指令325习题8-10 计算2 2 n 的RAM程序325习题8-11 计算 g(m,n)的程序 326习题8-12 图灵机模拟RAM的时间上界326习题8-13 图的同构问题326习题8-14 哈密顿回路327习题8-15 P类语言的封闭性327习题8-16 NP类语言的封闭性328习题8-17 语言的2 O (n k) 时间判定算法328习题8-18 P CO -NP329习题8-19 NP≠CO -NP329习题8-20 重言布尔表达式329习题8-21 关系∝ p的传递性329习题8-22 L ∝ p 330习题8-23 语言的完全性330习题8-24 的CO-NP完全性330习题8-25 判定重言式的CO-NP完全性331习题8-26 析取范式的可满足性331习题8-27 2-SAT问题的线性时间算法331习题8-28 整数规划问题332习题8-29 划分问题333习题8-30 最长简单回路问题334第9章近似算法336习题9-1 平面图着色问题的绝对近似算法336习题9-2 最优程序存储问题336习题9-4 树的最优顶点覆盖337习题9-5 顶点覆盖算法的性能比339习题9-6 团的常数性能比近似算法339习题9-9 售货员问题的常数性能比近似算法340习题9-10 瓶颈旅行售货员问题340习题9-11 最优旅行售货员回路不自相交342习题9-14 集合覆盖问题的实例342习题9-16 多机调度问题的近似算法343习题9-17 LPT算法的最坏情况实例345习题9-18 多机调度问题的多项式时间近似算法345算法实现题9-1 旅行售货员问题的近似算法(习题9-9) 346 算法实现题9-2 可满足问题的近似算法(习题9-20) 348算法实现题9-3 最大可满足问题的近似算法(习题9-21) 349 算法实现题9-4 子集和问题的近似算法(习题9-15) 351算法实现题9-5 子集和问题的完全多项式时间近似算法352算法实现题9-6 实现算法greedySetCover(习题9-13) 352算法实现题9-7 装箱问题的近似算法First Fit(习题9-19) 356算法实现题9-8 装箱问题的近似算法Best Fit(习题9-19) 358算法实现题9-9 装箱问题的近似算法First Fit Decreasing(习题9-19) 360算法实现题9-10 装箱问题的近似算法Best Fit Decreasing(习题9-19) 361算法实现题9-11 装箱问题的近似算法Next Fit361第10章算法优化策略365 习题10-1 算法obst的正确性365习题10-2 矩阵连乘问题的 O(n 2) 时间算法365习题10-6 货物储运问题的费用371习题10-7 Garsia算法371算法实现题10-1 货物储运问题(习题10-3) 374算法实现题10-2 石子合并问题(习题10-4) 374算法实现题10-3 最大运输费用货物储运问题(习题10-5) 375算法实现题10-4 五边形问题377算法实现题10-5 区间图最短路问题(习题10-8) 381算法实现题10-6 圆弧区间最短路问题(习题10-9) 381算法实现题10-7 双机调度问题(习题10-10) 382算法实现题10-8 离线最小值问题(习题10-11) 390算法实现题10-9 最近公共祖先问题(习题10-12) 393算法实现题10-10 达尔文芯片问题395算法实现题10-11 多柱Hanoi塔问题397算法实现题10-12 线性时间Huffman算法400算法实现题10-13 单机调度问题402算法实现题10-14 最大费用单机调度问题405算法实现题10-15 飞机加油问题408第11章在线算法设计410习题11-1 在线算法LFU的竞争性410习题11-4 多读写头磁盘问题的在线算法410习题11-6 带权页调度问题410算法实现题11-1 最优页调度问题(习题11-2) 411算法实现题11-2 在线LRU页调度(习题11-3) 414算法实现题11-3 k 服务问题(习题11-5) 416参考文献422。
并查集--学习详解文章作者:yx_th000文章来源:Cherish_yimi (/cherish_yimi/) 转载请注明,谢谢合作。
昨天和今天学习了并查集和trie树,并练习了三道入门题目,理解更为深刻,觉得有必要总结一下,这其中的内容定义之类的是取自网络,操作的说明解释及程序的注释部分为个人理解。
并查集学习:●并查集:(union-find sets)一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。
最完美的应用当属:实现Kruskar算法求最小生成树。
●并查集的精髓(即它的三种操作,结合实现代码模板进行理解):1、Make_Set(x) 把每一个元素初始化为一个集合初始化后每一个元素的父亲节点是它本身,每一个元素的祖先节点也是它本身(也可以根据情况而变)。
2、Find_Set(x) 查找一个元素所在的集合查找一个元素所在的集合,其精髓是找到这个元素所在集合的祖先!这个才是并查集判断和合并的最终依据。
判断两个元素是否属于同一集合,只要看他们所在集合的祖先是否相同即可。
合并两个集合,也是使一个集合的祖先成为另一个集合的祖先,具体见示意图3、Union(x,y) 合并x,y所在的两个集合合并两个不相交集合操作很简单:利用Find_Set找到其中两个集合的祖先,将一个集合的祖先指向另一个集合的祖先。
如图●并查集的优化1、Find_Set(x)时路径压缩寻找祖先时我们一般采用递归查找,但是当元素很多亦或是整棵树变为一条链时,每次Find_Set(x)都是O(n)的复杂度,有没有办法减小这个复杂度呢?答案是肯定的,这就是路径压缩,即当我们经过"递推"找到祖先节点后,"回溯"的时候顺便将它的子孙节点都直接指向祖先,这样以后再次Find_Set(x)时复杂度就变成O(1)了,如下图所示;可见,路径压缩方便了以后的查找。
【绿野仙踪】第十二章找寻恶女巫第十二章找寻恶女巫朵朵醒来时已是午后,太阳高挂在天空中,洒下一片金黄的光芒。
她揉了揉睡眼,走出了房间。
外面的世界似乎也变了样子,阳光明媚,鸟鸣欢快,花草都散发着清新的气息。
“咦,这是哪里?”朵朵好奇地四处张望着,“难道我睡着了,做了个美梦?”“你醒来了,小姑娘。
”一个温柔的声音响起。
朵朵转身一看,只见一个老奶奶骑着一匹独角兽,慢慢地走了过来。
老奶奶脸上带着和善的笑容,给人一种亲切的感觉。
“你好,我叫朵朵,你是?”朵朵礼貌地问道。
“我是绿野国的魔法师,大家都叫我绿仙。
”老奶奶自我介绍说,“你是不是来自人间世界的小姑娘?”“是的,我是从人间来的。
”朵朵点点头,“可是我不知道自己怎么来到这里的。
”“这是一段神奇的旅程,你将在这里寻找到自己的使命。
”绿仙神秘地说道,“你愿意跟我来吗?我需要你的帮助。
”“当然愿意!”朵朵毫不犹豫地答应下来,“我一直在寻找一个恶女巫,她曾经将我的父母变成了石像。
我决心找到她,让她变回原来的样子。
”“那么,我们就一起去寻找这个恶女巫吧。
”绿仙笑着点点头。
朵朵和绿仙骑着独角兽,一路向着城堡方向前进。
绿野国的风景如画,绵延的绿树,开满了五颜六色的花朵,还有一群群欢快的小动物。
城堡的周围布满了魔法护罩,让人感到一种神秘的氛围。
终于,他们来到了城堡的大门口。
两个巨大的石像镇守在门口,看起来非常凶悍。
绿仙举起手中的魔杖,唤起了一道光芒,石像渐渐散发出微微的光芒,慢慢地打开了城门。
一走进城堡,朵朵感到一阵压抑的气息,仿佛整个城堡都笼罩在黑暗之中。
她的心里有些紧张,但她知道自己必须勇敢面对一切。
“我们先到城堡的魔法图书馆,找一些关于恶女巫的资料。
”绿仙说道,“也许我们能够找到一些线索。
”两人一直走到城堡深处的一间大厅,这里充满了古老的魔法书籍,微弱的光线透过窗户洒落在地上,显得有一些阴暗。
绿仙拿出一本古老的魔法书,翻看着上面的内容。
朵朵也专心地查找资料,她并不知道这些魔法书上记载了多少关于恶女巫的信息。
【绿野仙踪】第十二章找寻恶女巫在《绿野仙踪》第十二章中,多洛西和她的朋友们决定寻找恶女巫,希望女巫能帮助多洛西回到家乡堪萨斯。
他们沿着黄砖路前进,在森林中行进了一段时间后,他们遇到了一位小矮人,他告诉他们女巫的住所在西边的哥布林城堡。
于是,多洛西和她的朋友们继续往西前进。
一路上,他们经历了许多困难和冒险。
他们经历了独角兽的追逐,遇到了让人害怕的荆棘丛,还遭遇了一场暴风雨。
尽管一直遭受着困难,但他们永不放弃,继续坚定地寻找女巫。
当他们终于到达哥布林城堡时,他们发现城堡被女巫的兵马守卫着。
多洛西和她的朋友们害怕地躲在一旁,讨论如何进入城堡。
就在他们苦恼之时,一只蓝色小鸟停在了多洛西的肩膀上,告诉她一个秘密:女巫最怕被水泼到。
多洛西和朋友们听到这个消息后,立即找到一个水井,用桶装满水。
接着,他们小心翼翼地慢慢接近女巫。
女巫很快发现了他们的行动,她生气地大叫道:“你们这些冒昧的家伙!你们怎敢来打扰我?”多洛西毫不畏惧地将桶中的水一扔,正中女巫的头上。
女巫发出一声尖叫,变成了一滩泥巴。
多洛西和她的朋友们欢呼雀跃,因为他们终于打败了恶女巫。
在女巫变成泥巴之后,哥布林城堡中的巫师告诉他们,唯一可以帮助她回到家乡的人是伟大的奥兹之神。
于是,多洛西和她的朋友们开始了他们去见奥兹之神的旅程。
他们沿着黄砖路前进,最终到达了奥兹之神的圣殿。
多洛西求助于奥兹之神,希望他能实现她的愿望,帮她回到堪萨斯。
奥兹之神告诉多洛西,他需要她帮助他打败另外三位邪恶的巫师,才能帮助她回到家乡。
于是,多洛西和她的朋友们决定勇敢地面对这个任务。
他们前往了第一位邪恶巫师的领地,并利用智慧和勇气战胜了他。
接着,他们去了第二个巫师的领地,再次取得了胜利。
他们来到了第三位巫师的领地,也成功地将其打败。
在打败了邪恶的巫师之后,奥兹之神履行了他的承诺。
他为多洛西和她的朋友们找到了一架热气球,让他们可以顺利回到堪萨斯。
他们心满意足地离开奥兹之神,回到了家乡。
海底两万里12到14章主要内容Jules Verne的经典小说《海底两万里》是一部关于人类探索未知世界的冒险小说,它描绘了科学家阿龙纳克和他的同伴在一艘名为“海底尼莫号”的潜水艇上穿越世界各地的海底,探索神秘的生物和景观。
而在小说的12到14章,我们可以看到更多有趣的故事情节。
在小说的第十二章,船员们遭遇了一场暴风雨,在惊险的逃生过程中,阿龙纳克和他的伙伴们不幸被吸入了一个深不可测的漩涡。
他们被卷进了一个未知的大洋深处,这里有着奇异的海底环境和危险的生物。
潜水艇失去了一切联系和方向感,阿龙纳克决定利用这次意外机会,继续探险令人惊叹的海底广袤世界。
他们开始一段漫长的旅程,一路上遇到了无数的生物和障碍,但一个剔透的晶体洞穴吸引了他们的注意力。
在这个洞穴里,阿龙纳克与他的伙伴们见到了奇异的珊瑚床和发光的海藻,以及一只奇怪的章鱼。
潜水艇在洞穴里遭受了重创,并被困在了一个巨大的洞穴里,他们面对着生命的危险。
但终于,他们发现了逃脱的方法,并且继续了之前的探险之旅。
在第十三章中,潜水艇突然被一支神秘的水下船只攻击,这艘船被称为“海狮号”,它有着不明来历和强大的武器,四处攻击着潜水艇和其他船只。
阿龙纳克和他的伙伴们发起了一次调查,终于发现“海狮号”其实是由一个叫做尼莫的神秘人物所操纵。
这个人物憎恶人类的侵略和破坏行为,他和他的下属们在海底建立了一个隐秘而神秘的基地。
阿龙纳克试图和尼莫取得联系,但他的努力都被拒绝了。
然而,在接下来的一次海底追逐中,潜水艇遇到了一只庞大的双臂章鱼,这个怪物险些危及了他们的生命,然而在关键时刻,尼莫出现了,并帮助他们消灭了这个信步般的巨兽。
在第十四章,阿龙纳克和他的伙伴们终于和尼莫交流了一次,他们发现这个人物想要向人类展示自己在海底科学和技术上的进步和成就。
然而,尼莫也有他自己的痛苦和悲伤,他曾经失去了自己的家人和自由,成为了一个自由主义者。
他认为人类所负的罪和造成的破坏已经够多了,他希望能够在海底建立一个离人类世界远离的天堂。
程序员代码⾯试指南:IT名企算法与数据结构题⽬最优解第1章栈和队列 1设计⼀个有getMin功能的栈(⼠★☆☆☆) 1由两个栈组成的队列(尉★★☆☆) 5如何仅⽤递归函数和栈操作逆序⼀个栈(尉★★☆☆) 8猫狗队列(⼠★☆☆☆)10⽤⼀个栈实现另⼀个栈的排序(⼠★☆☆☆) 13⽤栈来求解汉诺塔问题(校★★★☆) 14⽣成窗⼝最⼤值数组(尉★★☆☆) 19构造数组的MaxTree(校★★★☆) 22求最⼤⼦矩阵的⼤⼩(校★★★☆) 26最⼤值减去最⼩值⼩于或等于num的⼦数组数量(校★★★☆) 31第2章链表问题34打印两个有序链表的公共部分(⼠★☆☆☆) 34在单链表和双链表中删除倒数第K 个节点(⼠★☆☆☆) 35删除链表的中间节点和a/b 处的节点(⼠★☆☆☆) 38反转单向和双向链表(⼠★☆☆☆) 40反转部分单向链表(⼠★☆☆☆) 42环形单链表的约瑟夫问题(原问题:⼠★☆☆☆进阶:校★★★☆)43判断⼀个链表是否为回⽂结构(普通解法⼠★☆☆☆)(进阶解法尉★★☆☆) 48将单向链表按某值划分成左边⼩、中间相等、右边⼤的形式(尉★★☆☆) 52复制含有随机指针节点的链表(尉★★☆☆) 56两个单链表⽣成相加链表(⼠★☆☆☆) 59两个单链表相交的⼀系列问题(将★★★★) 62将单链表的每K个节点之间逆序(尉★★☆☆) 68删除⽆序单链表中值重复出现的节点(⼠★☆☆☆) 71在单链表中删除指定值的节点(⼠★☆☆☆) 73将搜索⼆叉树转换成双向链表(尉★★☆☆) 74单链表的选择排序(⼠★☆☆☆) 79⼀种怪异的节点删除⽅式(⼠★☆☆☆) 81向有序的环形单链表中插⼊新节点(⼠★☆☆☆) 82合并两个有序的单链表(⼠★☆☆☆) 84按照左右半区的⽅式重新组合单链表(⼠★☆☆☆) 86第3章⼆叉树问题 88分别⽤递归和⾮递归⽅式实现⼆叉树先序、中序和后序遍历(校★★★☆) 88打印⼆叉树的边界节点(尉★★☆☆) 95如何较为直观地打印⼆叉树(尉★★☆☆) 100⼆叉树的序列化和反序列化(⼠★☆☆☆) 103遍历⼆叉树的神级⽅法(将★★★★) 107在⼆叉树中找到累加和为指定值的最长路径长度(尉★★☆☆) 115找到⼆叉树中的最⼤搜索⼆叉⼦树(尉★★☆☆) 117找到⼆叉树中符合搜索⼆叉树条件的最⼤拓扑结构(校★★★☆)119⼆叉树的按层打印与ZigZag打印(尉★★☆☆) 129调整搜索⼆叉树中两个错误的节点(原问题:尉★★☆☆)(进阶问题:将★★★★) 134判断t1树是否包含t2 树全部的拓扑结构(⼠★☆☆☆) 140判断t1树中是否有与t2 树拓扑结构完全相同的⼦树(校★★★☆)141判断⼆叉树是否为平衡⼆叉树(⼠★☆☆☆) 144根据后序数组重建搜索⼆叉树(⼠★☆☆☆) 145判断⼀棵⼆叉树是否为搜索⼆叉树和完全⼆叉树(⼠★☆☆☆) 147通过有序数组⽣成平衡搜索⼆叉树(⼠★☆☆☆) 150在⼆叉树中找到⼀个节点的后继节点(尉★★☆☆) 151在⼆叉树中找到两个节点的最近公共祖先(原问题:⼠★☆☆☆)(进阶问题:尉★★☆☆再进阶问题:校★★★☆)153Tarjan算法与并查集解决⼆叉树节点间最近公共祖先的批量查询问题(校★★★☆) 159⼆叉树节点间的最⼤距离问题(尉★★☆☆) 169先序、中序和后序数组两两结合重构⼆叉树(先序与中序结合⼠★☆☆☆)(中序与后序结合⼠★☆☆☆先序与后序结合尉★★☆☆)171通过先序和中序数组⽣成后序数组(⼠★☆☆☆) 174统计和⽣成所有不同的⼆叉树(尉★★☆☆) 175统计完全⼆叉树的节点数(尉★★☆☆) 178第4章递归和动态规划181斐波那契系列问题的递归和动态规划(将★★★★) 181矩阵的最⼩路径和(尉★★☆☆) 187换钱的最少货币数(尉★★☆☆) 191换钱的⽅法数(尉★★☆☆) 196最长递增⼦序列(校★★★☆) 202汉诺塔问题(校★★★☆) 206最长公共⼦序列问题(尉★★☆☆) 210最长公共⼦串问题(校★★★☆) 213最⼩编辑代价(校★★★☆) 217字符串的交错组成(校★★★☆) 220龙与地下城游戏问题(尉★★☆☆) 223数字字符串转换为字母组合的种数(尉★★☆☆) 225表达式得到期望结果的组成种数(校★★★☆) 228排成⼀条线的纸牌博弈问题(尉★★☆☆) 233跳跃游戏(⼠★☆☆☆)235数组中的最长连续序列(尉★★☆☆) 236N皇后问题(校★★★☆) 238第5章字符串问题 242判断两个字符串是否互为变形词(⼠★☆☆☆) 242字符串中数字⼦串的求和(⼠★☆☆☆) 243去掉字符串中连续出现k 个0 的⼦串(⼠★☆☆☆) 245判断两个字符串是否互为旋转词(⼠★☆☆☆) 247将整数字符串转成整数值(尉★★☆☆) 248替换字符串中连续出现的指定字符串(⼠★☆☆☆) 251字符串的统计字符串(⼠★☆☆☆) 253判断字符数组中是否所有的字符都只出现过⼀次(按要求1 实现的⽅法⼠★☆☆☆)(按要求2 实现的⽅法尉★★☆☆) 255在有序但含有空的数组中查找字符串(尉★★☆☆) 258字符串的调整与替换(⼠★☆☆☆) 260翻转字符串(⼠★☆☆☆) 262数组中两个字符串的最⼩距离(尉★★☆☆) 266添加最少字符使字符串整体都是回⽂字符串(校★★★☆) 269括号字符串的有效性和最长有效长度(原问题⼠★☆☆☆)(补充问题尉★★☆☆) 273公式字符串求值(校★★★☆) 2760 左边必有1 的⼆进制字符串数量(校★★★☆) 278拼接所有字符串产⽣字典顺序最⼩的⼤写字符串(校★★★☆)281找到字符串的最长⽆重复字符⼦串(尉★★☆☆) 284找到被指的新类型字符(⼠★☆☆☆) 286最⼩包含⼦串的长度(校★★★☆) 288回⽂最少分割数(尉★★★☆) 292字符串匹配问题(校★★★☆) 294字典树(前缀树)的实现(尉★★☆☆) 299第6章⼤数据和空间限制 303认识布隆过滤器(尉★★☆☆) 303只⽤2GB 内存在20 亿个整数中找到出现次数最多的数(⼠★☆☆☆) . 30840 亿个⾮负整数中找到没出现的数(尉★★☆☆) 309找到100 亿个URL 中重复的URL 以及搜索词汇的top K 问题(⼠★☆☆☆) 31140 亿个⾮负整数中找到出现两次的数和所有数的中位数(尉★★☆☆) 312⼀致性哈希算法的基本原理(尉★★☆☆) 313第7章位运算 317不⽤额外变量交换两个整数的值(⼠★☆☆☆) 317不⽤任何⽐较判断找出两个数中较⼤的数(校★★★☆) 318只⽤位运算不⽤算术运算实现整数的加减乘除运算(尉★★☆☆) 319整数的⼆进制表达中有多少个1(尉★★☆☆) 325在其他数都出现偶数次的数组中找到出现奇数次的数(尉★★☆☆) 327在其他数都出现k 次的数组中找到只出现⼀次的数(尉★★☆☆) 329第8章数组和矩阵问题331转圈打印矩阵(⼠★☆☆☆) 331将正⽅形矩阵顺时针转动90°(⼠★☆☆☆) 333"之"字形打印矩阵(⼠★☆☆☆) 335找到⽆序数组中最⼩的k 个数(O(Nlogk)的⽅法尉★★☆☆)(O(N)的⽅法将★★★★) 336需要排序的最短⼦数组长度(⼠★☆☆☆) 342在数组中找到出现次数⼤于N/K 的数(校★★★☆)343在⾏列都排好序的矩阵中找数(⼠★☆☆☆) 347最长的可整合⼦数组的长度(尉★★☆☆) 349不重复打印排序数组中相加和为给定值的所有⼆元组和三元组(尉★★☆☆) 351未排序正数数组中累加和为给定值的最长⼦数组长度(尉★★☆☆)354未排序数组中累加和为给定值的最长⼦数组系列问题(尉★★☆☆)355未排序数组中累加和⼩于或等于给定值的最长⼦数组长度(校★★★☆) 358计算数组的⼩和(校★★★☆) 361⾃然数数组的排序(⼠★☆☆☆) 364奇数下标都是奇数或者偶数下标都是偶数(⼠★☆☆☆)366⼦数组的最⼤累加和问题(⼠★☆☆☆) 367⼦矩阵的最⼤累加和问题(尉★★☆☆) 368在数组中找到⼀个局部最⼩的位置(尉★★☆☆) 371数组中⼦数组的最⼤累乘积(尉★★☆☆) 373打印N 个数组整体最⼤的Top K(尉★★☆☆) 374边界都是1 的最⼤正⽅形⼤⼩(尉★★☆☆) 377不包含本位置值的累乘数组(⼠★☆☆☆) 380数组的partition 调整(⼠★☆☆☆) 382求最短通路值(尉★★☆☆) 384数组中未出现的最⼩正整数(尉★★☆☆) 386数组排序之后相邻数的最⼤差值(尉★★☆☆) 388第9章其他题⽬390从5 随机到7 随机及其扩展(原问题尉★★☆☆补充问题尉★★☆☆)(进阶问题校★★★☆)390⼀⾏代码求两个数的最⼤公约数(⼠★★☆☆) 394有关阶乘的两个问题(原问题尉★★☆☆进阶问题校★★★☆)395判断⼀个点是否在矩形内部(尉★★☆☆) 398判断⼀个点是否在三⾓形内部(尉★★☆☆) 399折纸问题(尉★★☆☆)402蓄⽔池算法(尉★★☆☆) 404设计有setAll功能的哈希表(⼠★☆☆☆) 406最⼤的leftMax与rightMax之差的绝对值(校★★★☆)408设计可以变更的缓存结构(尉★★☆☆) 410设计RandomPool结构(尉★★☆☆) 414调整[0,x)区间上的数出现的概率(⼠★☆☆☆) 416路径数组变为统计数组(校★★★☆) 417正数数组的最⼩不可组成和(尉★★☆☆) 422⼀种字符串和数字的对应关系(校★★★☆) 4261 到n 中1 出现的次数(校★★★☆) 429从N 个数中等概率打印M 个数(⼠★☆☆☆) 431判断⼀个数是否是回⽂数(⼠★☆☆☆) 433在有序旋转数组中找到最⼩值(尉★★☆☆) 434在有序旋转数组中找到⼀个数(尉★★☆☆) 436数字的英⽂表达和中⽂表达(校★★★☆) 439分糖果问题(校★★★☆) 444⼀种消息接收并打印的结构设计(尉★★☆☆) 448设计⼀个没有扩容负担的堆结构(将★★★★) 451随时找到数据流的中位数(将★★★★) 462在两个长度相等的排序数组中找到上中位数(尉★★☆☆) 465在两个排序数组中找到第K ⼩的数(将★★★★) 468两个有序数组间相加和的TOP K 问题(尉★★☆☆)471出现次数的TOP K 问题(原问题尉★★☆☆进阶问题校★★★☆) 474Manacher算法(将★★★★) 483KMP 算法(将★★★★) 491丢棋⼦问题(校★★★☆) 498画匠问题(校★★★☆)505邮局选址问题(校★★★☆) 509。