普及组杂谈

为啥是普及组???

因为我菜啊,普及组的东西都不知道。。。

1. O(n)求数列最大连续子段和

用递推,last表示取到上一个位置最大的连续子段和

for(int i=1;i<=n;i++){

    last=max(last,0)+a[i];

    ans=max(ans,last);

}

对于环形数组呢?

首先讨论,环形和线型的关系,就是a[1]与a[n]相连

所以ans有两种情况:过a1,an之间的隔板,或者不过

对于不过,直接线性求,对于过,那最小连续子段和就不过

所以线性求maxn,minn

ans=max(maxn,sum-minn)

2. 当图比较稠密(有重边? 的时候,最短路的队列改成优先队列(堆优化???) 虽然多了一个log 但是会快很多

(luoguP1951)

to be continue;

 3. 费用流

费用流的模板已经放在博客里了,为什么还是要放模板呢? 在网上找费用流模板的时候,发现,诶怎么都是单路增广。唯一一个名字叫zkw费用流的是多路增广。hzwer的博客里zkw的spfa是从T跑到S的,看得很别扭,导致我一直以为就是必须反着写。其实不然,正反是一样的,仔细看看,这不就是网络流的bfs改成spfa嘛,没啥区别啊。

4. LIS

nlogn时间求出最长lis 用单调队列的思想

dp[i]表示长度为i的lis末尾最小的数是多少 len表示最长长度(网上其它博客也有我就不说了)

原文地址:https://www.cnblogs.com/Amphetamine/p/7234587.html