网络流 何为网络流 想要弄清楚网络流,首先要知道网络的概念,通常在运筹学中,网络是指一个有向图$G\=\(V,E)$。其每条边$(u,v)\inE$都有一个权值$c(u,v)$,称为这条边的流量(Capacity),还有两个特殊的点,一个是源点(Source),一个是汇点(Sink)在图论中,网络流(英语:Networkflow)在作为网络的有向图中分配流,使一条边的流量不会超过它的容量。 网络流的性质 1.容量限制 $\\\\$对于有向图\(G\)中的每一条边上所流经的流量不得超过其容量,即\(f(u,v)\≤\c(u,v)\)。 2.斜对称性...
1.语言与计算机 递归调用 向前引用 随机化 指针类型 按位运算 2.排序 冒泡排序(起泡排序) 选择排序 插入排序 ★Shell排序 快速排序 线性时间排序 查找第k大元素 带第二关键字的排序 3.数论(一) 素性判断 筛选建立素数表 分解质因数 进制转换 二分取幂 ★二分求解线性递推方程 4.数论(二) 求最大公约数 求最小公倍数 ★扩展的辗转相除 ★求解一元一次同余式 ★中国剩余定理 ★高斯消元 5.四则运算 表达式计算 高精度加法 高精度减法 高精度乘法 ★高精度除法...
1.简介 线段树,顾名思义,就是由线段构成的树,是一个较为优秀的数据结构,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点,通常用于解决区间类的问题,在各大OI赛事中频繁出现。下面我将为你展示线段树的一些基本操作及原理 2.存储 线段树一般用结构体存储,代码如下: structnode{ intl,r,num,add; }tree[10010]; //add用于懒标记 3.建树 代码如下: voidbuildtree(intx,inty,intp){ t[p].l=x,t[p].r=y; if(xy){ t[p].sum=a[x]; return; } i...
1.简介 模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。 ————百度百科 简而言之,模拟退火是一种随机化算法,常用于信息学竞赛中骗取高分,但因为其为随机化算法,所以不是很稳定,少则10分,多则AC,这取决于你的RP了(doge)。 它与爬山算法最大的不同是,在寻找到一个局部最优解时,赋予了它一个跳出去的概率,也就有更大的机会能找到全局最优解。 2.原理 原理在这里就不过多说了,因为可能对于...
题目传送门 从题目中我们可以看出,这道题显然是用滑动窗口来完成的。 是的,滑动窗口!而且这个滑动窗口比较容易维护,因为它窗口的大小"基本"固定,(因为还需要考虑不完整的段),只需使用一个变量来标记,而且所有的数都是从1s的整数,因此,只需用一个数组便可以保存每个数在窗口中出现的次数。在用一个b数组来记录不合法(窗口中含有相同的歌),在最后再用s减去不合法的个数就行了。代码如下: include<bits/stdc.h> usingnamespacestd; inta[1000100],tmp[1000100],b[1000100]; intmain(){ intn,m,s; ci...
主定理: n为问题规模,a为递推的子问题数量,n/b为每个子问题的规模,f(n)为递推意以外进行的计算工作。 a≥1,b>1为常数,f(n)为函数,T(n)为非负整数。则有以下结果(分类讨论): 1)若则有 2)若则有 3)若且对于某个常数c<1和所有充分大的n有 则有其中,大O代表的是该算法的算法复杂度上限,即该算法在最坏情况之下的复杂度。f(x)=O(g(x))正式的数学定义:存在正常数c,n,n0,当n>n0时,对于任意f(n)符合0<=f(n)<=cg(n),如图: 从这张图可以看出,当横坐标的值大于x=n0时,cg(n)的纵值总大于f(n),这可以理...