学习笔记
~ 知至~
人外有人,山外有山~
展开
-
L2-032 彩虹瓶 (25分)
L2-032彩虹瓶(25分)彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。假设彩虹瓶里要按顺序装 N 种颜色的小球(不妨将顺序就编号为 1 到 N)。现在工厂里有每种颜色的小球各一箱,工人需要一箱一箱地将小球从工厂里搬到装填场地。如果搬来的这箱小球正好是可以装填的颜色,就直接拆箱装填;如果不是,就把箱子先码放...原创 2020-01-23 18:12:57 · 384 阅读 · 0 评论 -
物理地址=块号 x 块长 + 页内地址
在一个分页存储管理系统中,页长为4KB某一作业的页表如图所示,虚拟地址3000对应的物理地址为 . 页号 物理块号 0 3 1 4 2 6 虚拟块0对应物理块3,实...原创 2020-01-05 19:26:09 · 8386 阅读 · 0 评论 -
整数划分问题的递归分析
整数划分问题的递归分析 将正整数n表示为一系列正整数之和, n=n1+n2+n3+n4+......+nk ( 其中,n1>=n2>=n3>=n4........>=nk>0,k>=1 ) 正整数n的这种表示成为正整数n的划分。 正整数n的不同划分个数成为正整数n的划分数,记作p...原创 2019-12-25 08:16:44 · 545 阅读 · 0 评论 -
操作系统: 司机与售票员的进程同步问题
司机与售票员的进程同步问题 在公共汽车上,司机和售票员的工作流程如图所示。 为保证乘客的安全,司机和售票员应 密切配合协调工作。 请用信号量来实现司机与售票员之间的同步。 司机 启动车辆 正常行车 到站停车 售票员 关车门 售票 开车门 图 司机和售票员工作流程图在这个问题中没有资源的抢夺,所以无互斥...原创 2019-12-24 07:13:32 · 19004 阅读 · 5 评论 -
软件工程导论(第六版) 思维导图全
软件工程导论(第六版) 思维导图全软件工程软件工程概述可行性研究需求分析总体设计详细设计实现维护面...原创 2019-12-22 14:50:26 · 22124 阅读 · 8 评论 -
操作系统: 生产者-消费者问题
操作系统: 生产者-消费者问题1、单生产者和单消费者 缓存绑定问题,两个进程:生产者和消费者,一个固定大小的缓存。 生产者的工作就是制造一段数据,放进缓存,如此反复; 消费者则一次消费一段数据(将其从缓存中移除), 问题的核心: 就是要保证不让生产者在缓存还是满的时候仍要向缓存写数据, 不...原创 2019-12-21 21:58:33 · 357 阅读 · 0 评论 -
操作系统:同步互斥——理发师睡觉问题
问题描述理发店有一位理发师,一把理发椅和N把供等候的顾客坐的椅子。如果没有顾客,理发师在理发椅上睡觉;当有一个顾客到来时,他必须先唤醒理发师;如果顾客来时理发师正在理发,如果有空椅子,坐下等待,否则离开。用P,V操作解决上述问题中的同步和互斥关系。分析将顾客看作N个生产者,理发师是1个消费者。理发师和椅子是临界资源,故顾客间是互斥关系;理发师和顾客是...原创 2019-12-21 21:38:10 · 3086 阅读 · 1 评论 -
操作系统: 经典例题——和尚打水
和尚打水问题 某寺庙,有小和尚和老和尚若干,有一个水缸,由小和尚提水入缸供老和尚饮用. 水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水. 水桶总数为3个。每次入水、取水仅为一桶,且不可同时进行。 试给出有关取水、入水的PV算法描述。分析:由题可知, 水井...原创 2019-12-21 21:23:23 · 6064 阅读 · 0 评论 -
操作系统: 桌子上有一只盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放 橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用PV操作实现他们 之间的同步机制。
操作系统:进程的同步与互斥练习 桌子上有一只盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放橘子, 一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用PV操作实现他们之间的同步机制。分析设计四个信号量metux,empty、apple、orange;metux表示:爸爸、妈妈、儿子和女儿进程对盘子的互斥使用;em...原创 2019-12-21 21:07:02 · 19494 阅读 · 1 评论 -
操作系统:哲学家进餐问题
操作系统:哲学家进餐问题问题描述: 有五个哲学家围坐在一张圆桌旁就餐,,圆桌上有五个碗和五只筷子,他们的生活方式就是交替地进行思考和进餐。平时每个哲学家独立思考问题,饥饿时便试图分别取其左右两侧的筷子,只有两只筷子都拿到后才能进餐;进餐完毕后应立即放下筷子,然后继续思考问题。问题分析:由问题描述可知,哲学家共享的五只筷子是临界资源,为实现筷子的互斥使用,可为每只筷子设置一个互斥信号量,...原创 2019-12-21 20:35:34 · 1944 阅读 · 0 评论 -
操作系统: 读者写者问题
操作系统: 读着写者问题一个数据文件或记录可以被多个进程共享。只读的进程为“reader进程”,其他进程为“writer进程”。允许多个对象同时读一个共享对象,但是不允许一个writer进程和其他reader进程同时共享对象。使用记录性信号量解决读者与写者问题互斥信号量wmutex:实现reader与writer进程间在读或写时的互斥,整型变量readcount:表示正在...原创 2019-12-21 19:48:21 · 624 阅读 · 0 评论 -
离散化
一、概述数据离散化是一个非常重要的思想。为什么要离散化?当以权值为下标的时候,有时候值太大,存不下。 所以把要离散化的每一个数组里面的数映射到另一个值小一点的数组里面去。打个比方,某个题目告诉你有10^4个数,每个数大小不超过10^10,要你对这些数进行操作,那么肯定不能直接开10^10大小的数组,但是10^4的范围就完全没问题。我们来看一下定义:离散化,把无限空间中有限的个体映射...原创 2019-08-10 15:51:54 · 3652 阅读 · 0 评论 -
Java高效输入输出流讲解
Java高效输入输出流讲解Java中执行输出和输入操作,需要通过IO流。例如最常见的System.out.println()就是一个输出流。IO流的类比较多,但核心体系就是由File、InputStream、OutputStream、Reader、Writer和Serializable(接口)组成的。I/O流基础概念按照流的方向分为输入流(InputStream)与输出流(O...原创 2019-08-12 09:47:25 · 1922 阅读 · 0 评论 -
优先队列(priority_queue)四种自定义排序方法
#include<iostream>#include<vector>#include<queue>using namespace std;struct cmp{ bool operator () ( int r , int l ){ return r > l; } }; struct c...原创 2019-03-14 16:34:19 · 15808 阅读 · 0 评论 -
树状数组(Binary Indexed Tree)讲解及模板
讲解点击参考博客:https://blog.csdn.net/Yaokai_AssultMaster/article/details/79492190树状数组模板:#include<iostream>#include<cstring>#include<cstdio>using namespace std;int tree[50005],n;i...原创 2019-08-10 11:38:31 · 413 阅读 · 0 评论 -
背包初始化
背包初始化:初始化的细节问题我们看到的求最优解的背包问题题目中,事实上有两种不太相同的问法。有的题目要求“恰好装满背包”时的最优解,有的题目则并没有要求必须把背包装满。一种区别这两种问法的实现方法是在初始化的时候有所不同。如果是第一种问法,要求恰好装满背包,那么在初始化时除了F[0] 为0,其它F[1::V] 均设为 1,这样就可以保证最终得到的F[V] 是一种恰好装满背包的最优解。...原创 2019-08-10 09:11:32 · 131 阅读 · 0 评论 -
匈牙利算法
基本概念—二分图二分图:是图论中的一种特殊模型。若能将无向图G=(V,E)的顶点V划分为两个交集为空的顶点集,并且任意边的两个端点都分属于两个集合,则称图G为一个为二分图。匹配:一个匹配即一个包含若干条边的集合,且其中任意两条边没有公共端点。如下图,图3的红边即为图2的一个匹配。1 最大匹配在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M...原创 2019-08-13 16:04:02 · 290 阅读 · 0 评论 -
扩展KMP算法讲解
扩展KMP算法用处:问题定义:给定两个字符串S和T(长度分别为n和m),下标从0开始,定义extend[i]等于S[i]...S[n-1]与T的最长相同前缀的长度,求出所有的extend[i]。举个例子,看下表:i 0 1 2 3 4 5 6 7 S a a a a a b b b T...原创 2019-04-08 20:02:31 · 768 阅读 · 0 评论 -
Manacher 算法讲解
一:背景 给定一个字符串,求出其最长回文子串。例如:s="abcd",最长回文长度为 1; s="ababa",最长回文长度为 5; s="abccb",最长回文长度为 4,即bccb。以上问题的传统思路大概是,遍历每一个字符,以该字符为中心向两边查找。其时间复杂度为$O(n^2)$,效率很差。1975年,一个叫Manacher的人发明了一个算法,Manacher算法(中文名:...原创 2018-10-28 10:44:51 · 1288 阅读 · 0 评论 -
四种方法求最长回文子串
所谓回文串,就是正着读和倒着读结果都一样的回文字符串。比如:a, aba, abccba都是回文串,ab, abb, abca都不是回文串。一、暴力法最容易想到的就是暴力破解,求出每一个子串,之后判断是不是回文,找到最长的那个。求每一个子串时间复杂度O(N^2), 判断子串是不是回文O(N),两者是相乘关系,所以时间复杂度为O(N^3)。string longestPali...原创 2019-04-10 11:51:45 · 3896 阅读 · 0 评论 -
蔡勒公式
蔡勒公式:蔡勒公式蔡勒(Zeller)公式:是一个计算星期的公式。随便给一个日期,就能用这个公式推算出是星期几。蔡勒公式如下:W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1或者是:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1公式中的符号含义如下:w:星期; w对7取模得:0-星期日,1-星期一...原创 2019-03-21 19:07:47 · 4053 阅读 · 0 评论 -
set四种排序方法
#include<iostream>#include<set>using namespace std;struct cmp1{ bool operator () ( const int &a , const int &b ) const { return a > b; } };struct cmp2{...原创 2019-03-14 16:39:25 · 5619 阅读 · 0 评论 -
常见算法模板
#include<iostream>#include<cstring>#include<cmath>#include<algorithm>using namespace std;// 公因数 int gcd( int a ,int b ){ return b == 0 ? a : gcd( b, a % b );}// ...原创 2019-02-27 23:14:06 · 2150 阅读 · 0 评论 -
SPFA算法模板及如何判断负环
SPFA算法如何判断负环 ?首先我们要知道,对于一个不存在负环的图,从起点到任意一个点最短距离经过的点最多只有 n 个。这样的话,我们用 cnt[ i ] 表示从起点(假设就是 1)到i 的最短距离包含点的个数,初始化 cnt[ 1 ] = 1,那么当我们能够用点 u 松弛点 v 时,松弛时同时更新 cnt[ v ] = cnt[ u ] + 1,若发现此时 cnt[ v ] &...原创 2019-01-05 22:31:30 · 851 阅读 · 0 评论 -
关键路径(学习笔记)
关键路径算法演示(AOE网) 例图 如上图,是一个AOE网,点表示状态,边表示活动及其所需要的时间。为了求出关键路径,我们使用一下算法:1.求出到达各个状态的最早时间(按最大计)这个过程是要从源点开始向汇点顺推:V1是源点,其最早开始时间是0。 V2、V3、V4最早时间分别是是6、4、5。 对于V5而言,V2到V5所花费时间是6+1=7,而V3到V5所花费时间是...原创 2018-12-27 15:32:33 · 718 阅读 · 0 评论 -
ACM 数论 欧拉定理证明 和 费马小定理 及其性质
欧拉函数 :欧拉函数是数论中很重要的一个函数,欧拉函数是指:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) 。 完全余数集合:定义小于 n 且和 n 互质的数构成的集合为 Zn ,称呼这个集合为 n 的完全余数集合。 显然 |Zn| =φ(n) 。有关性质:对于素数 p ,φ(p) = p -1 。对于两个不同素数 p, q ,它们的乘积 n = p...原创 2018-11-24 10:53:42 · 1499 阅读 · 0 评论 -
KMP和EXKMP易错误点
KMPnext数组的含义:给定的模式串S next[i]表示前面长度为i的子串中,前缀和后缀相等的最大长度。 还有一种理解方法: next[j] 表示的是: 当S[i] != T[j] 的时候 , 下次 S[i] 和T[j] 比较的位置; ...原创 2019-04-09 08:06:44 · 208 阅读 · 0 评论 -
中国剩余定理(孙子定理)
参考博客https://www.cnblogs.com/MashiroSky/p/5918158.html中国剩余定理 在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之 剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。 具体解法分三步:找出三个数:从3...原创 2019-04-14 16:48:32 · 38578 阅读 · 1 评论 -
网络流基础
网络流基础网络流的相关定义:源点:有n个点,有m条有向边,有一个点很特殊,只出不进,叫做源点。 汇点:另一个点也很特殊,只进不出,叫做汇点。 容量和流量:每条有向边上有两个量,容量和流量,从i到j的容量通常用c[i,j]表示,流量则通常是f[i,j].通常可以把这些边想象成道路,流量就是这条道路的车流量,容量就是道路可承受的最大的车流量。很显然的,流量<=容量。而对于每个不是源...原创 2019-08-13 15:21:06 · 197 阅读 · 0 评论 -
基本算法学习笔记
一、并查集(实质是有多棵树的森林) 优化: 路径压缩: 加快查找速度. 按秩合并: 使具有较少结点的树的根指向具有较多结点的树的根。 并查集删除点: 一开始就用虚拟根表示父节点。 要想...原创 2020-01-26 19:44:53 · 531 阅读 · 0 评论 -
ACM 数论 逆元的总结
逆元的应用求解 ( a/b )%m 时 一般想法是 转化为(a%(b*m))/b,转化过程如下令k = (a/b)/m(向下取整), x = (a/b)%m;a/b = k*m + x (x < m);a = k*b*m + b*x;a%(b*m) = b*x;a%(b*m)/b = x;得证:a/b%m =a%(b*m)/b;(公式适用于很多情况:...原创 2018-11-23 21:20:32 · 696 阅读 · 0 评论 -
字典树模板
一、数组写法: #include<iostream>#include<cstring>using namespace std;int trie[400001][26],sum[400009],tot,root;char s[20];void insert( ){ root = 0; int len = strlen( s ); int id;...原创 2019-07-15 16:59:25 · 168 阅读 · 0 评论 -
数据结构链表讲解( 链表种类及实现)
链表从链表的实现方式可以把链表分为单链表,循环链表,双向链表单链表: 链表中的元素的指向只能指向链表中的下一个元素或者为空, 元素之间不能相互指向。也就是一种线性链表。双向链表:是这样一个有序的结点序列,每个链表元素既有指向下一个元素 的指针,又有指向前一个元素的指针,其中每个结点都有两种...原创 2019-07-14 15:36:46 · 1046 阅读 · 0 评论 -
SQL中EXISTS的使用
SQL中EXISTS的使用1.简介 2.表结构 3.查询所有选修了“C1”课程的学生名。 4.查询没有选C1课程的学生的学号、姓名 5.查询选修了所有课程的学生的姓名(续) 6.查询至少选修了S1所选的全部课程的学生名 7.在FROM语句中使用子查询,对查询结果定义表名及列名 例:求平均成绩超过80分的学号及平均成绩1.简介不相关子查询:子查询的查询条件不依赖于父查询的称为不...原创 2019-06-19 11:01:37 · 296 阅读 · 0 评论 -
java多态性
多态性 多态性: 指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A 系统访问 B 系统提供的服务时,B 系统有多种提供服务的方式,但一切对 A 系统来说都是透明的。方法重载(overload)实现的是编译...原创 2019-05-06 10:05:26 · 181 阅读 · 0 评论 -
01背包
经典的01背包问题:问题描述:给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个.输入格式 输入的第一行包含两个整数n, m,分别表示物品的个数和背包能装重量。 以后N行每行两个数Wi和Vi,表示物品的重量和价值输出格式 输出1行,包含一个整数,表示最大价值。样例输入3 52 33 54...原创 2019-04-27 18:55:32 · 337 阅读 · 0 评论 -
ACM 数论 同余的性质
同余的性质同余,顾名思义,就是许多的数被一个数d去除,有相同的余数。d数学上的称谓为模。如a=6,b=1,d=5,则我们说a和b是模d同余的。因为他们都有相同的余数1。 数学上的记法为: a≡ b(mod d) 可以看出当n<d的时候,所有的n都对d同商,比如时钟上的小时数,都小于12,所以小时数都是模12的同商.对于同余有三种说法都是等价的...原创 2018-11-24 09:03:46 · 813 阅读 · 0 评论