SDN多控制器资源池的设计与实现 SDN多控制器资源池的设计与实现,顾名思义,就是SDN控制器集群,这里使用Opendaylight控制器进行实现。主要功能如下:Opendaylight控制器本身带有集群功能,所以很大一部分工作只需要进行配置,本文仅用于对自己设计进行记载,如果有相同题目开发的人建议换用其他控制器,虽然自己设计代码变多,但是其他控制器本身带有Opendaylight所不具有的接口。更多的原因在于你需要阅读Opendaylight的源码。使用ubuntu18作为镜像,dockerfile文件如下:然后在dockerfile所
整除分块(入门) 整除分块属于数论的一部分。这里尽可能脱离数论的知识。看一道例题。已知正整数n,求∑i=0n=⌊ni⌋\sum_{i=0}^n=\lfloor\frac{n}{i}\rfloori=0∑n=⌊in⌋以n=8为例,结果如下表i12345678⌊ni⌋\lfloor\frac{n}{i}\rfloor⌊in⌋84221111可以看到上面的表中相连着的同一数值的区间不少,由这些数值可以将这张表划分为多个区间块,这就是整除分块了。整除的性质使得从1
单调栈(初级) Poj2559 题目大意:给出一个柱形统计图(histogram), 它的每个项目的宽度是1, 高度和具体问题有关。 现在编程求出在这个柱形图中的最大面积的长方形。可以通过维护一个高度始终单调递增的矩形序列来解决。具体来讲,我们建立一个栈,用来保存若干个矩形,这些矩形的高度是单调递增的,我们从左到右依次扫描每个矩形:如果当前矩形比栈顶矩形高,直接进栈;否则不断取出栈顶,直至栈为空或者栈顶矩形的高度比当前矩形小。在出栈过程中,我们累计被弹出的矩形的宽度之和,并且每弹出一个矩形,就用他的高度和宽度去更
树状数组维护区间 树状数组维护区间顾名思义,就是用数组来模拟树形结构。那么衍生出一个问题,为什么不直接建树?答案是没必要,因为树状数组能处理的问题就没必要建树。和Trie树的构造方式有类似之处。树状数组可以解决大部分基于区间上的更新以及求和问题。1. 树状数组和线段树的区别在哪里?树状数组可以解决的问题都可以用线段树解决,这两者的区别在哪里呢?树状数组的系数要少很多,2.树状数组的优点和缺点修改和查询的复杂度都是O(logN),而且相比线段树系数要少很多,比传统数组要快,而且容易写。缺点是遇到复杂的区间问题还是不能
lowbit函数求解 lowbit函数求解lowbit这个函数的功能就是求某一个数的二进制表示中最低的一位1,举个例子,x = 6,它的二进制为110,那么lowbit(x)就返回2,因为最后一位1表示2lowbit函数求解有以下两种方式。方式一:先消掉最后一位1,然后再用原数减去消掉最后一位1后的数,答案就是lowbit(x)的结果;方法二:原数与原数的相反数进行相与操作。(解释的话如果学过计算机组成原理之类的很容易明白,)负数在计算机中以补码的形式存储。代码一:int lowbit(int n){ retur
RMQ(区间最值查询) RMQRMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干次询问RMQ(i,j),返回数列A中下标在区间[i,j]中的最小/大值。解决这类问题方法有很多,比如ST,树状数组,线段树等等都可以进行维护区间最值,ST作为离线算法,具有一定的优越性,时间复杂度最小,但是不支持区间修改,如果是区间修改可以使用其他方法。ST(Sparse Table)算法可以在O(nlogn)时间内进行预处理,然后在O(1)时间内回答每个查询。1)
树的ADT实现 实现二叉树的基本操作:建立、遍历、计算深度、结点数、叶子数等。输入C,先序创建二叉树,#表示空节点;输入H:计算二叉树的高度;输入L:计算二叉树的叶子个数;输入N:计算二叉树节点总个数;输入1:先序遍历二叉树;输入2:中序遍历二叉树;输入3:后续遍历二叉树;输入F:查找值=x的节点的个数;输入P:以缩格文本形式输出所有节点。代码#include<bits/stdc++.h>using namespace std;char wh;typedef struct node