题目链接 洛谷 COGS.24 对于大的矩阵可以枚举:对于小的矩阵,需要在满足条件的区域求一个矩形和的最小值 预处理S2[i][j]表示以(i,j)为右下角的C\(*\)D的矩阵和, 然后对于求矩形区域的最小值,可以先将每行看做一个数列,对于每个点y,得到一个[y-(B-3),y]的最小值 处理完行后得到Minr[][],对每列的进行同样的操作,就可以得到Min[x][y]表示([x-A+3,x],[y-B+3,y])的最小矩形和 但是注意单调队列处理的是S2,S2表示的是C\(*\)D的和,n…
传送门 啧……明明以前做到过这种类型的题结果全忘了…… 这种矩阵的,一般都是先枚举行,然后对列进行一遍单调队列,搞出右下角在每一行中合法位置时的最小权值 再枚举列,对行做一遍单调队列,用之前搞出来的最小权值再做一次单调队列,更新答案 感觉很难讲清楚啊……看代码好了……虽然代码可能更不清楚…… //minamoto #include<bits/stdc++.h> using namespace std; #define getc() (p1==p2&&(p2=(p1=buf)+f…
https://www.luogu.org/problemnew/show/P2219#sub 为了增添公园的景致,现在需要在公园中修筑一个花坛,同时在画坛四周修建一片绿化带,让花坛被绿化带围起来. 如果把公园看成一个M*N的矩形,那么花坛可以看成一个C*D的矩形,绿化带和花坛一起可以看成一个A*B的矩形. 如果将花园中的每一块土地的“肥沃度”定义为该块土地上每一个小块肥沃度之和,那么, 绿化带的肥沃度=A*B块的肥沃度-C*D块的肥沃度 为了使得绿化带的生长得旺盛,我们希望绿化带的肥沃度最大.…
Code: #include<bits/stdc++.h> using namespace std; #define setIO(s) freopen(s".in","r",stdin) #define maxn 1002 #define inf 1000000000 deque<int>q; int n,m,A,B,C,D; int minv[maxn][maxn],sumv[maxn][maxn],val[maxn][maxn],tot[…
题意分析 给出一个 $m*n$ 的矩阵 $A$ ,要求从中选出一个 $a*b$ 的矩阵 $B$ ,再从矩阵 $B$ 中选出一个 $c*d$ 的矩阵 $C$ ,要求矩阵 $B,C$ 的边界不能重合,求矩阵 $C$ 在矩阵 $B$ 中的补集的权值和的最大值. 思路分析 通过分析题目后可以发现本题可以用二维单调队列进行求解,同时利用到了二维前缀和.即先对其中一维进行求解,然后再求解另一维. 具体实现 1. 预处理二维前缀和 设 $suml_{i,j}$ 表示以 $(i,j)$ 为右下角的矩形 $B$…
洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和仓库总是被敌方派人偷袭.于是,WLP动用了他那丰满且充实的大脑(或许更偏向前者),想出了一个好主意,他把海滩分成垂直于海岸线的若干列,在其中的几列上放置几个信号塔,试图来监视整个海滩.然而,WLP是一个非常心急的人,他把信号塔建好后才发现还需给信号塔供能,它们才能投入使用(这不是废话么),它们都有一…
P2219 [HAOI2007]修筑绿化带 二维单调队列 写了这题 P2216 [HAOI2007]理想的正方形  后,你发现可以搞个二维单调队列 来保存矩形(i+1,i+A-1)(j+1,j+B-1)内矩形C*D的最小值 具体怎么搞呢 先搞出二维前缀和 蓝后先按$x$轴跑一遍单调队列,再按$y$轴跑一遍就好辣 #include<iostream> #include<cstdio> #include<cstring> using namespace std; inlin…
洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了——聪聪根本就不知道部落究竟是如何分布的. 不过好消息是,聪聪得到了一份荒岛的地图.地图上标注了N个野人居住的地点(可以看作是平面上的坐标).我们知道,同一个部落的野人总是生活在附近.我们把两个部落的距离,定义为部落中距离最近的那两个居住点的距离.聪聪还获…
洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 那么讲题了 很好的一道图论模型转化的题目 考虑什么情况下两个元素一定要放在不同的栈内 经过一番仔细思考+草稿模拟你会得出 当且仅当存在三元组\((i,j,k)\),其中\(i<j<k\)且\(v[k]<v[i]<v[j]\)时,\(i\)和\(j\)一定要放在两个不同的栈内 抽象理解…
[咻咻咻] (https://www.luogu.org/contestnew/show/11616) 令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能惨惨的迎接剩下的16天(吧) 下面是题解的代码(填坑),神奇的是这四道题都需要DP.参加SXOI的大佬真是tql,此处手动@ljt12138@__stdcall T1找性质,popcnt为1的加上popcnt为0的就是答案(然而当时没想到只打了暴力) #include<bits/stdc++.h>…