![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单调栈
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
E. 矩阵 2020计蒜之道决赛
https://nanti.jisuanke.com/t/49109学习自https://www.cnblogs.com/BOZHAO/p/13880947.html求最大全1子矩阵可以左开右开这样对应高度找最大宽度但是有时候涉及全1子矩阵中间的计数,需要左开右闭,即左边严格小于,右边<=这题我们统计以第i行为底边,必须经过(i,j)这个点的满足的矩阵数对于最高高度为h[j],左边界为l[j],右边界为r[j],首先我们可以得到(r[j]-l[j]+1)*h[j]这一整个矩阵中所有原创 2020-10-29 00:57:04 · 116 阅读 · 0 评论 -
K. Largest Common Submatrix 2019ICPC银川现场赛
https://nanti.jisuanke.com/t/42391去年思想出问题了这题没做出来我吐了当时没注意到两个矩阵的数字都是1-n*m的排列,注意到这个那么相同的子矩阵就是对应数字的横坐标和纵坐标的差值相同就行了然后就是个傻逼最大全零子矩阵#include<bits/stdc++.h>using namespace std;const int maxl=1010;int n,m,top,ans;int h[maxl],s[maxl],l[maxl],r[ma原创 2020-10-22 18:12:57 · 155 阅读 · 0 评论 -
C sequence 2019牛客暑期多校训练营(第四场)
https://ac.nowcoder.com/acm/contest/884/C听说这题是笛卡尔树,发现去年这题是队友写的,来补一补然而完全不想用笛卡尔树写,单调栈多爽对于a[i],找出他为最小的l[i]和r[i],然后如果a[i]<0,就跨过i的找前缀和相减最小值,否则则找区间和最大值辣鸡题目卡st表要写线段树#include<bits/stdc++.h>using namespace std;typedef long long ll;const int原创 2020-08-07 22:11:30 · 151 阅读 · 0 评论 -
namomo OJ contest2 C.序列
https://namomo.top:8081/contest/2/problem/C妙啊,学到许多首先最大的很好想,就是要尽可能长即可,那么就用单调栈处理出每个值作为最小值统治的区间,然后用线段树维护这个位置还剩多少个需要减就行了。。。其实这个就是我当时坐积木大赛的贪心做法,尽可能长最小从群友那里学到了,把整个序列差分,那么我要让一段区间减1,就相当于在差分数组上左边+1,右边-1,那么对于差分数组中每个正数,都要找负数把它抵消掉,为了要平方最小,那么找最近的就好了,把负数坐标反着用个栈维护,原创 2020-07-06 03:51:12 · 564 阅读 · 0 评论 -
codeforces1299C Water Balance
https://codeforces.com/problemset/problem/1299/CBCDE都想得太慢了。。。最后没冲完。。。。好菜啊这题我们可以想到整个序列一定是单调不下降的,如果下降了,要保证字典序最小,那右边的小的跟左边的大的合并一定能使答案最优。那么搞个单调栈就行了,从左到右,单调栈中维护区间段的长度,和这一区间段的值,单调栈按值从小到大,如果当前进来的比s[top...原创 2020-02-10 11:06:03 · 302 阅读 · 0 评论 -
2019南昌邀请赛网络赛 I. Max answer
这题麻烦之处在于有负数,对于每一段连续的正数,我们假设当前最小的数字是a[i],那么所能得到最大的value就是包含i的最大区间且最小值是a[i],直接用单调栈维护每一个数字所统治(以他为最小值)的最大区间范围。负数的话,对于一个很小的负数,这个区间我们希望他的和越小越好,那么乘起来最大值就会越大,所以我们要想怎么找到包含这个点的和最小的区间,一开始我想用two point ,后来越想越怪。最...原创 2019-04-21 00:14:44 · 494 阅读 · 0 评论 -
2019牛客多校第一场A题
传送门https://ac.nowcoder.com/acm/contest/881/A比赛的时候二分答案,然后用单调栈统计每个数字统治的区间只要相同那么这个答案就是可行的后来看到牛逼网友的做法,直接O(n)单调栈扫一遍,然后只要判断统治区间(在这区间内最小)的左端相不相同,找到第一个不相同的位置,那里就是不行的。理性分析一下,因为右端是随便截取的,假设前i个可以,那么增加第i+1个时,新...原创 2019-07-20 00:16:16 · 321 阅读 · 0 评论 -
2019牛客多校第二场 H Second Large Rectangle
题目链接:https://ac.nowcoder.com/acm/contest/882/H最大全零子矩阵扩展题先一遍单调栈记录某一个最大的矩阵再一遍单调栈,如果当前最大的矩阵长宽为h,len,且坐标与记录的最大矩阵的坐标不同,ans=max(h*len,ans)不然就只更新h-1和len-1的情况#include<bits/stdc++.h>#define m...原创 2019-07-21 16:09:14 · 169 阅读 · 0 评论 -
All-one Matrices 2019牛客多校第8场A题
传送门:https://ac.nowcoder.com/acm/contest/888/A这场我咕咕咕了,请假回了家,我远程跟队友口胡,队友还没做出来,然后回来后补题竟然还一直WA。。。难顶,hkt给了我几组数据终于调过了。之前求最大全0子矩阵的经典问题我的单调栈写得是有问题的,对于当前高度h[i][j]相等的情况,如果弹出,那么右区间就不对,如果不弹出,那么左区间就不对,但最右边的那个位...原创 2019-08-13 10:35:42 · 138 阅读 · 0 评论