摘要: 斜率优化 斜率优化是指对于dp[i]=max/min(dp[j]+a[i]*b[j]+c[j])这样的方程的优化 -a[i]*b[j]+dp[i]=dp[j]+c[j] 把b[j]看成x,dp[j]+c[j]看成y -a[i]=k dp[i]=b 这就是一次函数的形式,可以看成用斜率为-a[i]的直 阅读全文
posted @ 2018-01-11 18:30 19992147 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 线段树 线段树记录到每个位置截止的答案 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6 + 5; int n, m; ll ans; int nxt[N], last[N], a 阅读全文
posted @ 2018-01-11 18:17 19992147 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 二分图匹配 首先有个定理:最长反链=最小链覆盖 最小链覆盖可以重复经过点 所以我们不能直接建图 那么我们用floyd判断是否相连 然后建图就行了 #include<bits/stdc++.h> using namespace std; const int N = 410, inf = 1e9; in 阅读全文
posted @ 2018-01-11 18:16 19992147 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 数位dp 复习数位dp 数位dp一般用记忆化搜索来解决 观察需要满足的条件,然后计入状态 状态还要记录是否达到上线,以及前导零 比如说这道题 dfs(bit,a4,a8,cnt,last,limit) 由于这道题枚举的时候不可能有前导零,所以就不记录前导零 bit表示当前考虑第bit位,从高到低 a 阅读全文
posted @ 2018-01-11 18:14 19992147 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 整体二分+决策单调性 这个方法已经忘了... 决策单调性是指dp[i]由dp[1]->dp[i-1]更新,那么当dp[j]比dp[k]优且j>k时,对于i->n j都比k优 通过这个性质我们可以把dp优化到nlogn 具体做法是整体二分 solve(l,r,L,R)表示当前对于l->r的dp决策区间 阅读全文
posted @ 2018-01-11 18:08 19992147 阅读(87) 评论(0) 推荐(0) 编辑