摘要:
题目链接: "WOJ1318" 题目分析: 首先我们要知道当这是一个线性的序列的时候应该怎么做: "最大子序和" 这里是线性的,就把数组复制两遍即可 好像有些细节要处理(也可能是我代码写丑了),具体的都在代码里,挺好理解的 代码: 阅读全文
摘要:
题目链接: "WOJ1138" 题目分析: 是很经典的一道题,~~乱搞的~~方法应该有不少,这里介绍O(n)的单调队列做法 首先维护一个前缀和,然后枚举每一个位置,维护一个前缀和单增的单调队列,但队列仅储存下标,将下标在当前位置的范围k以外的元素出队 因为对于每一个位置,ans=sum[i] min 阅读全文
摘要:
题目链接: "WOJ1109" 题目描述: 奶牛在熊大妈的带领下排成了一条直队。 显然,不同的奶牛身高不一定相同…… 现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛A是最矮的,最右边的B是最高的,且B高于A奶牛,且中间如果存在奶牛,则身高不能和A、B奶牛相同,的这样的一些奶牛最多会有多 阅读全文
摘要:
题目链接: "最大子段和" 题目分析: 动态规划O(n)求解,设f[i]表示以i为终点的最大子段和 分两种情况: 若f[i 1] 0,则显然f[i]=f[i 1]+a[i](a[i]必须包含在内) 若f[i 1] define MAXN (200000+5) using namespace std; 阅读全文
摘要:
题目链接: "滑动窗口" 题目分析: 单调队列经典题,~~话说我第一次做这个题的时候是用线段树水的~~ 两个单调队列分别维护最小最大值,因为窗口有k的长度限制所以 维护下标 更方便 又由于是从左往右扫过去的,所以可以保证下标和值都是单调的 读一个维护一个,以 单增队列 为例,每读入一个元素就把前面比 阅读全文
摘要:
题目链接: "WOJ1019" 题目分析: 单调栈维护,读一个进来,如果前面的比它大就弹出来,然后压栈里(反正它在最右边) 压进栈里输出它前面那个数就好了 O(n)扫一遍就能过 真的水得不能再水的题了……~~我只是水篇博客~~ 代码: 阅读全文
摘要:
题目链接: "洛谷SP1805" 题意: 如图所示,在一条水平线上有n个宽为1的矩形,求包含于这些矩形的最大子矩形面积(图中的阴影部分的面积即所求答案) 输入格式: 有多组测试数据,每组数据占一行。输入零时读入结束。 每行开头为一个数字n(1 define MAXN (100000+5) using 阅读全文