栈
算球?
在校学生
展开
-
poj 3250 Bad Hair Day(单调栈)
一排牛站着向右看,长的高的牛可以看到长的矮的牛的头顶,每个牛都可以看到0至多个牛的头顶,把每个牛能看到的加起来。单调栈水题#include <stdio.h> #include <string.h> #include <algorithm> #include <stack> using namespace std;typedef long long LL; const int MAXN = 8001原创 2017-09-13 17:12:15 · 220 阅读 · 0 评论 -
poj 2082 Terrible Sets(单调栈)
题意就是和下图差不多,只是宽度不是1了。 #include <stdio.h> #include <string.h> #include <stack> #include <algorithm> using namespace std;const int MAXN = 50010; int w[MAXN]; int h[MAXN]; int ws[MAXN]; int L[MAXN],R[MAXN原创 2017-09-13 18:16:07 · 266 阅读 · 0 评论 -
poj 3494 Largest Submatrix of All 1’s(单调栈)
观察力太水,看没看出来。 参考题解:http://www.hankcs.com/program/algorithm/poj-3494-largest-submatrix-of-all-1s.html 这题可以看成 51nod 1102 面积最大的矩形 这题的加强版,看你能不能看出来这个模型。 00000 00101 01111 这里面含1最多的由1组成的矩形是下边那四个1,就是四个高原创 2017-09-13 19:31:24 · 278 阅读 · 0 评论 -
51nod 1102 面积最大的矩形(单调栈)
以i所指的矩形高度作为要组成的矩形的高度,分别向左右扩展。用单调栈维护一个left数组和一个right数组,记录向左右能扩展到的边界,然后扫一遍出结果。#include <iostream> #include <stack> #include <algorithm> using namespace std;const int MAXN = 5e4+10; long long num[MAXN]; i原创 2017-06-18 16:28:20 · 354 阅读 · 0 评论 -
bzoj 1012: [JSOI2008]最大数maxnumber(单调栈+二分)
单调栈维护下,二分就好了 bzoj用%I64d一直格式错误,换了%lld就好了#include <stdio.h> #include <string.h> #include <algorithm> using namespace std;typedef long long LL; const int MAXN = 200100; LL num[MAXN]; int len; int s[MAXN]原创 2017-09-13 22:15:51 · 217 阅读 · 0 评论 -
51nod 1279 扔盘子(单调栈)
开始是直接从井口往里扔,复杂度是O(n^2),超时。。然后呢,你会发现,如果井上边的宽度小,下边的宽度大,那么下边宽度多大都是没用的,所以就让他等于上边宽度就好了。然后处理后这个井的宽度从上到下就是一个非递增的了,然后从下向上匹配,O(n)。。。。还可以用单调栈预处理#include <cstdio> #include <cstring> const int MAXN = 50050; int n,原创 2017-06-18 12:13:06 · 412 阅读 · 0 评论 -
codeforces 817D Imbalanced Array(单调栈)
碰到这题不会做,看题解说是单调栈,就去学了学单调栈,回头再做这题。结果在处理边界的时候犯了个很sx的错误,竟然还想了好几天才发现错误 思路: 设la[i]为从num[i]向左数第一个比num[i]小的数字的下标,ra[i]为从num[i]向右数第一个比num[i]小的数字的下标,则区间(la[i],ra[i])中的最小值就是num[i],(i-la[i])*(ra[i]-i)就是这段区间包含原创 2017-06-21 14:39:46 · 438 阅读 · 0 评论