可优化dp:转移、状态都是一维的
優化思路:单调栈、单调队列、数据结构、斜率优化
O(logn):单点修改、求前缀和、区间修改、区间求和
快速插入删除、查询最大最小
有序集合(序列)+快速插入删除+区间求第k大
区间修改->单点修改:差分
前提条件:修改操作互不影响
etc:区间取最值:有影响 区间求和:相互独立
按位%|^:每一位相互独立
<注>考虑非树边替换树边
非严格次小生成树:有且仅有一条边与最小生成树不同
求最小生成树枚举删边,重新跑最小生成树:O(n*m)–>60分
枚举加一条边删去环上最长边即求树链最长边 -->100分
【例题】货车运输+四川省选day1 t1
我们定义一条非树边所构成环上的所有树边被这条非树邊覆盖
枚举每条非树边,与被其覆盖的最小边比较
如果相等则两者都可能在,如果不等则非树边一定不在,树边一定在
性质1:白边边權越大在最小生成树中的白边越少
性质2:黑边与白边相对独立且白边关系不变
无向图:点双连通分量(割点:删去一个点使图不连通)、边雙(桥)
二分图匹配:(匹配:左与右连边)(在每一个点只匹配一个点的前提下求最多匹配)
匈牙利算法 复杂度上界:(邻接矩阵:O(n^3) 边表:O(n*m))
二分图模型:树(奇数深度连向偶数深度)、网格图(每个图连向周围四个点)
网络流:【例题】网络流24题+2009年胡伯涛论文<最小割模型在信息学竞赛中的应用>
先枚举第一段区间的右端点r,当l=1时求出所有×的位置,并求出第二段区间能取的最大长度。
随着l往右走,部分×被解锁,更新第二段区间的最大长度(并查集实现),然后更新答案。
f[i]表示在并查集树上的父亲i的祖先就表示从i出发向右最近×的位置。