11 2018 档案
摘要:除法的运算过程 与乘法相比,除法的实现较为复杂,运算过程如下: 过程: 被除数和余数:将余数和被除数视为一个,共享一个寄存器,初始值为被除数 除数:可视为不断右移,并和被除数相减 商:每个bit依次生成,可视为不断左移 除法器的工作流程 要注意的是,与手算相比,电路实现总是将余数减除数,所以如果出现
阅读全文
摘要:乘法的运算过程 人们日常习惯的乘法是十进制,但计算机实现起来不方便。首先,需要记录9x9乘法表,每次相乘去表中找结果;其次,将竖式相加也不方便。 但二进制却十分方便,冯·诺伊曼在《关于ENDVAC的报告草案》中说“二进制可以极大简化乘法和除法运算。尤其是对于乘法,不再需要十进制乘法表,也不需要两轮的
阅读全文
摘要:4-bit加法器示例 先看一下上一节得到的加法器实现,可以看出改进的地方。 不难发现整个过程是从右至左依次执行,每一个进位需要等前面的运算全完成,可以在一开始得到所有的进位吗? 行波进位加法器(Ripple-Carry Adder,RCA) 像上面4-bit加法器这样实现的加法器被称作行波进位加法器
阅读全文
摘要:二进制加法 半加器(Half Adder) 半加器的功能是将两个1位二进制数相加。输入端口A、B,输出端口S(输出),C(进位)。 其有一个很明显的缺点:不能将低位的进位参与运算。 全加器(Full Adder) 全加器由两个半加器构成。输入端口A、B、Cin,输出端口S(和)、Cout(进位输出)
阅读全文
摘要:集体管 现在集成电路中常使用MOS集体管:Metal-Oxide-Semiconductor(金属-氧化物-半导体) 晶体管有两种类型:N型和P型,由NMOS和PMOS共同构成的互补型MOS集成电路(CMOS) 它们两者的区别在于:NMOS是高电平有效,PMOS是低电平有效。 例如,对NMOS来说,
阅读全文
摘要:算术运算 计算机结构的简化模型(模型机) 演示实例一 以add $8,$9,$10(格式被Latex强行改变,不知道怎么办555。。。)演示加法运算 1、首先取指令,即得到得到指令的编码 查指令编码表知opcode = 0,function = 0x20,shamt = 0(非移位指令) opcod
阅读全文
摘要:历史 为满足“二战”对计算“火炮射击表”的需要,1943年开始正式设计ENIAC,ENICA是世界上第一台通用电子计算机 冯·诺伊曼对ENIAC进行分析,认为ENIAC的开关定位和插拔线只不过代表一些数字信息,完全可以像受程序管理的数据一样存放在主存储器中(“存储程序”的概念) 冯·诺伊曼写出《关于
阅读全文
摘要:配置 目前博客园已经内置添加了MathJax以支持LaTeX数学公式。 Latex公式基础 排版方式 行级元素:行级元素使用 $括起来,两个该符号分别表示公式的首尾 块级元素:块级元素使用 $$括起来。块级元素默认是居中显示 常用西文符号 \alpha,\beta,...,\omega 代表α、β、
阅读全文
摘要:一、代数结构 代数运算 代数运算的定义:设A是非空集合,n∈I+,函数f:An->A称为A上的一个n元运算,n称为该运算的阶,特别的,A中的每个元素称为A上的0元运算。 代数运算的性质 封闭性:设°是集合A上的n元运算,S是A的非空子集。若 ∀a1,a2,..,an∈S,有°(a1,a2,...,a
阅读全文
摘要:背景动画 先直接看效果吧,还是挺有趣的 (来自官网上的一张图) 使用食用 食用方法 先良心安利js写的动画库。其原理就是基于 HTML5 新特性 canvas,渲染的动画效果。有兴趣可以访问一下:动画库原地址,里面有使用方法的详细介绍,这里不赘述了。 首先下载其中的canvas-nest.js,然后
阅读全文
摘要:简介 随机这种东西,貌似在ACM里好像就是用于骗分。 但其实有更多实际的用处(用代替防止快排退化,用构建Treap树保持二叉搜索树的平衡等等),还有就是模拟退火算法,也算是随机化算法中一个极好的例子吧。 模拟退火是一种随机化算法,常用于求函数极值。当一个问题的方案数量极大(甚至是无穷的),我们一般有
阅读全文
摘要:用博客园也有一段时间了,但一直苦于显示的代码太小(对我这种年老眼花的来说),终于想起了找搜索引擎。 幸好博客园在博客设置中提供了自定义的css设置,让我们可以最大限度的设定博客风格。 一、寻找样式名称 (如果你仅仅希望知道如何修改,那么可以调过本节,直接进入修改一节) 进入一篇文章,在Chrome浏
阅读全文
摘要:[Scapegoat Tree] & BZOJ3224 识替罪羊树之算法乃吾生之幸也! 0x00 扯淡 知乎上面有个问题问最优雅的算法是什么,我觉得暴力即是优雅。 当然这里说的暴力并不是指那种不加以思考的无脑的暴力,而是说用繁琐而技巧性的工作可以实现的事,我用看似简单的思想和方法,也可以达到近似于前
阅读全文
摘要:要求 给定n个数,对这n个数进行排序 这题当然可以直接调用sort 用set实现排序,元素必须无重复 用二叉搜索树来排序,但不能通过已经排序好的大数据点 可以打乱输入的数据实现深度期望 朝鲜树,当插入超过某个深度时重构整颗树 替罪羊树 通过非旋转的重构实现的二叉平衡树,是朝鲜树的高级版,详情可见ht
阅读全文
摘要:作用 unique函数可以删除有序数组中的重复元素,即去重(并不是真正的删除,后面会讲) 定义在头文件<algorithm>中 函数原型 1.只有两个参数,且参数类型都是迭代器: iterator unique(iterator first,iterator last); 这是最常用的形式,表示对区
阅读全文
摘要:关于set set是以特定的顺序存储相异元素的容器。 set是关联式容器,C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被
阅读全文
摘要:SkipList的基本原理 为什么选择跳表? 目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,
阅读全文
摘要:表达式树 二叉树是表达式处理的常用工具,例如,a+b*(c-d)-e/f可以表示成如下所示的二叉树 其中,每个非叶子节点表示一个运算符,左子树是第一个运算数对应的表达式,右子树是第二个表达式对应的表达式。每个叶子节点都是数。 其在空间利用上也非常高效,节点数等于表达式的长度。 表达式转二叉树 lrj
阅读全文
摘要:这里介绍两种方法 首先,需要在博客园后台的设置页面里申请JS权限(通常很快,几分钟就通过了) 一、加入百度统计 为什么要用百度统计?因为Google被墙了,当然这是一点。还有就是国内大多用百度,因为是自己家的数据所以能提供的更多样化些 注册(Tip:百度统计账号和百度贴吧、网盘这种通用账号是分开的,
阅读全文
摘要:在博客园阅读了很多优秀的博文,内容清晰,结构合理,开篇还有目录索引,自己也用博客园很长时间了,今天补充下如何自己手动生成博文的章节目录索引。 阅读目录: 1. 文章撰写 2. 添加锚点 3. 添加目录并建立锚点链接 4. 附录 1. 文章撰写 把需要的文章内容先写完整,章节标题添加标题3的样式(在T
阅读全文
摘要:复制粘贴应该是最显而易见的方法,但是不仅会有丢失内容,而且格式也会丢失。要想达到更好的效果,可以从html源码入手。 1、在chrome浏览器中打开要转载的文章,右键选择检查 2、在chrome的右方框里,找到“id=article_content”的div标签。选中该节点,网页中相应的部分会高亮显
阅读全文
摘要:线段树详解 By 岩之痕 目录: 一: 综述 二:原理 三:递归实现 四:非递归原理 五:非递归实现 六:线段树解题模型 七:扫描线 八:可持久化 (主席树) 九:练习题 一:综述 假设有编号从1到n的n个点,每个点都存了一些信息,用[L,R]表示下标从L到R的这些点。 线段树的用处就是,对编号连续
阅读全文
摘要:题目 给你一个有n个顶点、m条边的无向带权图。需要擦除一些边使得剩余的边数不超过k,如果一个点在原始图到顶点1的最短距离为d,在删边后的图中到顶点的最短距离仍是d,则称这种点是 good。问如何删边,使得 good点最多。 分析 首先调用最短路算法求各点到顶点1的最短距离,同时记录下每点在最短路上的
阅读全文
摘要:支配集 概念 支配集:设G=(V,E)是无向简单图,D⊆V,若任意v∈V-D,都存在u∈D,使得uv∈E,则称D为一个支配集。 极小支配集:若D是图G的支配集,且D的任何真子集都不再是支配集,则称D为一个极小支配集。 最小支配集:如果图G的支配集D满足对于G的任何支配集D’,都有|D|≤|D’|,则
阅读全文
摘要:题目 题目链接 简单的说,就是作一个圆包含所有的点且与x轴相切,求圆的最小半径 方法一 分析:求最小,对半径而言肯定满足单调性,很容易想到二分。我们二分半径,然后由于固定了与X轴相切,我们对于每一个点,就可以算出这个点在圆上的时候圆与x轴相交的距离(其实就是圆心的x轴的范围)。然后对每个点都可以求一
阅读全文
摘要:顺序表基本运算的实现 参考资料:数据结构教程 李春葆版
阅读全文
摘要:基本概念 平面图:设无向图G,若能将G画在一个平面上,使得任何两条边仅在顶点处相交,则称G是具有平面性质的图,简称平面图,否则称G是非平面图。 在平面图G中,G的边将其所在的平面划分成的区域称为面,有限的区域称为有限面或内部面,无线的区域称为无限面或外部面,包围面的边称为该面的边界,包围每个面的所有
阅读全文
摘要:题目 分析 深度优先搜索遍历每一种情况,去翻转次数最小的,当然,还要加一些剪枝,毕竟O(nn)的时间复杂度。 代码 C风格 C++风格 参考链接: https://blog.csdn.net/tianshuai1111/article/details/7659673 http://blog.sina
阅读全文
摘要:问题简介 有n个城市,每个城市间均有道路,一个推销员要从某个城市出发,到其余的n-1个城市一次且仅且一次,然后回到再回到出发点。问销售员应如何经过这些城市是他所走的路线最短? 用图论的语言描述就是:给定一个权值为正数的赋权完全图,求各边权值和最小的哈密尔顿回路。 这个问题就是著名的旅行商问题(TSP
阅读全文
摘要:简介 1857年爱尔兰数学家哈密尔顿发明了“周游世界”玩具,用一个正十二面体的20个顶点表示世界上20个大城市,30条棱代表这些城市之间的道路。要求游戏者从任意一个城市(即顶点)出发,延棱行走经过每个城市一次且只经过一次,最终返回出发地。哈密尔顿将此问题称为周游世界问题,并且作了肯定的回答。 以下是
阅读全文
摘要:欧拉道路与欧拉回路 欧拉道路:通过图G中每条边一次且仅一次的道路称作该图的欧拉道路。 欧拉回路:通过图G中每条边一次且仅一次的回路称作该图的欧拉回路。 欧拉图:存在欧拉回路的图称为欧拉图。 欧拉在1736年给出了欧拉道路/回路存在的必要条件,在1873年希尔霍尔策首次给出了刻画欧拉图的充要条件。 定
阅读全文
摘要:题目 输入n(n≤100000)个单词,是否可以把所有这些单词排成一个序列,使得每个单词的第一个字母和上一个单词的最后一个字母相同(例如 acm,malform,mouse)。每个单词最多包含1000个小写字母。输入中可以有重复单词。 解题思路 把字母看作结点,单词看作有向边,则问题有解等价于图中存
阅读全文
摘要:游戏简介 Chomp是一个双人游戏,有m x n块曲奇饼排成一个矩形格状,称作棋盘。 两个玩家轮流自选一块还剩下的曲奇饼,而且还要把它右边和下边所有的曲奇饼都取走(如果存在) 先吃到左上角(1,1)那块曲奇饼的玩家为失败 如图所示 红方选择(3,3) > 蓝方选择(1,4) > 红方选择(1,2)
阅读全文
摘要:拓扑排序 从离散数学的角度定义,假设(A,≤)是有限偏序集,对其进行拓扑排序是指将其扩展成一个全序集,使得≤∈<,即对任意的a,b∈A,若a≤b,则a<b。 从图论的角度定义,对一个有向无环图G进行拓扑排序,是将G中所有的顶点排成一个线性序列,使得图中任意一对顶点u和v,如果(u,v)∈E(G),则
阅读全文
摘要:问题描述 设有3个分别命名为X、Y和Z的塔座,在塔座X上有n个直径各不相同的盘片,从小到大一次编号为1、2、..n。现要求将X塔座上的这n个盘片移到塔座Z上并仍按同样的顺序叠放,盘片移动时必须遵守一下规则:每次只能移动一片盘片;盘片可以插在X、Y和Z中的任一塔座上;任何时候都不能将一个较大的盘片放在
阅读全文
摘要:功能介绍 绘制出图形界面,支持鼠标点击实现四则运算(可带括号),同时具有清零和撤回操作。另外一种模式,可以绘制一些特定的函数图像。 代码实现 注意 本人使用的是VS2017,上面的代码直接粘贴过去大概率跑不起来,需要做一点修改: 1、若提示graphics.h不存在,需要先安装EasyX图形库 2、
阅读全文
摘要:递归的可视化 修改递归函数,使其能够显示打印出每次函数递归调用的形参的值。 每一级调用的输出都带有一级缩进,就是使得程序的输出清晰、有趣并且有含义。 思路 以斐波那契数列为例,假设n=5,递归的形参如下: 效果图如下: 代码实现
阅读全文
摘要:游戏简介 场景沉浸式游戏,遇到不同的场景,你有不同的选择,历时三天,你就能取得胜利。 代码 备注:游戏非常有趣,但代码却很简单,C语言入门的同学就可以拿来练手。很久之前在贴吧(C语言吧)见得,对作者佩服得五体投地啊!
阅读全文
摘要:游戏简介 经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。箱子只可以推, 不可以拉, 而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。 思路 模拟题。难点在于推箱子的动作,如果箱子前方是箱子或者墙壁都不能被推动,是目的地或空地可以。撤回操作是通过一个三维数组记录每一步
阅读全文