摘要:"原题链接" 神仙$DP$啊。。。 题解请移步隔壁 "大佬的博客" $QAQ$
阅读全文
摘要:"BZOJ原题链接" "洛谷原题链接" 显然可以用数据结构或$ST$表或单调队列来维护最值。 这里采用单调队列来维护。 先用单调队列维护每一行的最大值和最小值,区间长为正方形长度。 再用单调队列维护 之前维护出的每行最值数组 的每一列的最大值和最小值,区间同上。 最后维护出的数组其实就是以每个点为左
阅读全文
摘要:"原题链接" 太菜了,只会$O(n^3)$暴力$DP$,最后看大佬的博客看了好久也是一知半解。。 "大佬博客传送门" cpp include include using namespace std; const int N = 1010; struct dd{ int l, r, v[N], id[
阅读全文
摘要:一道单调队列优化$DP$ "BZOJ原题链接" "洛谷原题链接" 朴素的$DP$方程并不难想。 定义$f[i][j]$表示到第$i$天,手上持有$j$股时的最大收益。 转移方程可以分成四个部分。 1. 第$i$天为空手时买股票 $\qquad\qquad f[i][j]= AP_i\times j$
阅读全文
摘要:一道单调队列优化$DP$ "原题链接" 首先想到的应该是$O(n^3)$的朴素$DP$。 定义$f[i][j]$表示第$j\sim i$块干草堆作为顶层时的最大高度。 $\qquad\qquad f[i][j]=\max\limits_{k=1}^{j 1}\{f[j 1][k]\}+1,(sum[
阅读全文
摘要:一道单调队列优化$DP$。 "原题链接" 设$f[i][j]$表示前$i$个工匠粉刷前$j$块木板(可以有不刷的木板)能获得的最大报酬。 1. 第$i$个工匠可以不刷第$j$块木板,此时$f[i][j]=f[i 1][j]$。 2. 第$j$块木板可以不刷,此时$f[i][j]=f[i][j 1]$
阅读全文