题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1127

首先,把权值 > 2*k 的点作为“坏点”,然后在图中用悬线法找权值最大的子矩形;

如果权值最大的子矩形的权值 < k ,那么无解;

否则,针对这个子矩形,一列一列地删掉元素,某一时刻权值一定会变成 k~2*k 或 < k;

如果变成 k~2*k ,直接输出即可;

如果变成 < k,那么刚才删掉的那一列的权值 > k;

针对那一列,如果权值和就是 k~2*k,输出那一列;

否则,针对这一列,一个一个删除元素,因为此时元素的权值都是 < k 的,所以总会有某一时刻删成 k~2*k,即为答案;

注意输出的坐标是 列-行 !!!

还要注意一个一个删除列上的元素时,符合答案后的坐标是 i+1 !!!

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int const xn=;
int n,k,v[xn][xn],l[xn][xn],r[xn][xn],s[xn][xn];
ll sum[xn][xn];
int rd()
{
int ret=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=; ch=getchar();}
while(ch>=''&&ch<='')ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return f?ret:-ret;
}
ll get(int a,int b,int c,int d){return sum[c][d]-sum[a-][d]-sum[c][b-]+sum[a-][b-];}
int main()
{
k=rd(); n=rd(); int a=,b=,c,d;
for(int i=;i<=n;i++)
{
int tmp=;
for(int j=;j<=n;j++)
{
v[i][j]=rd();
sum[i][j]=sum[i][j-]+sum[i-][j]-sum[i-][j-]+v[i][j];
if(v[i][j]>=k&&v[i][j]<=*k)a=i,b=j;
if(v[i][j]>*k){tmp=j+; continue;}
s[i][j]=s[i-][j]+;
if(v[i-][j]>*k||i==)l[i][j]=tmp;
else l[i][j]=max(tmp,l[i-][j]);
}
tmp=n;
for(int j=n;j;j--)
{
if(v[i][j]>*k){tmp=j-; continue;}
if(v[i-][j]>*k||i==)r[i][j]=tmp;
else r[i][j]=min(tmp,r[i-][j]);
}
}
if(a){printf("%d %d %d %d\n",b,a,b,a); return ;}
ll mxs=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(v[i][j]>*k)continue;
int ta=i-s[i][j]+,tb=l[i][j],tc=i,td=r[i][j];
ll ts=get(ta,tb,tc,td);
if(ts<k)continue;
if(ts>mxs)mxs=ts,a=ta,b=tb,c=tc,d=td;
}
if(!mxs){printf("NIE\n"); return ;}
if(mxs>=k&&mxs<=*k){printf("%d %d %d %d\n",b,a,d,c); return ;}
for(int j=b;j<=d;j++)
{
mxs-=get(a,j,c,j);
if(mxs>=k&&mxs<=*k){printf("%d %d %d %d\n",j+,a,d,c); return ;}
else if(mxs<k)
{
ll ts=get(a,j,c,j);
if(ts>=k&&ts<=*k){printf("%d %d %d %d\n",j,a,j,c); return ;}
for(int i=a;i<=c;i++)
{
ts-=v[i][j];
if(ts>=k&&ts<=*k){printf("%d %d %d %d\n",j,i+,j,c); return ;}//i+1!!!
}
}
}
return ;
}

bzoj 1127 KUP —— 最大子矩形+答案构造的更多相关文章

  1. XJOI 3606 最大子矩形面积/LightOJ 1083 Histogram(单调栈/笛卡尔树)

    A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rec ...

  2. Vijos1055 奶牛浴场(极大化思想求最大子矩形)

    思路详见 王知昆<浅谈用极大化思想解决最大子矩形问题> 写得很详细(感谢~....) 因为不太会用递推,所以用了第一种方法,时间复杂度是O(n^2),n为枚举的点数,对付这题绰绰有余 思路 ...

  3. POJ 2018 Best Cow Fences (二分答案构造新权值 or 斜率优化)

    $ POJ~2018~Best~Cow~ Fences $(二分答案构造新权值) $ solution: $ 题目大意: 给定正整数数列 $ A $ ,求一个平均数最大的长度不小于 $ L $ 的子段 ...

  4. 经典单调栈最大子矩形——牛客多校第二场H

    题目是求次大子矩形,那么在求最大子矩形的时候维护M1,M2即可 转移M2时比较的过程要注意一下 #include<bits/stdc++.h> using namespace std; # ...

  5. bzoj 1127 [POI2008]KUP——思路(悬线法)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1127 大于2*K的视为不能选的“坏点”.有单个格子满足的就直接输出. 剩下的都是<K的 ...

  6. [BZOJ] 1127: [POI2008]KUP

    似曾相识的感觉 考虑另一个判断问题,给定一个k,问这个k是否可行 存在矩形和\(sum>2k\),则该矩阵不对判定做出贡献 存在矩形和\(sum\in [k,2k]\),则我们找到了一个解 于是 ...

  7. [BZOJ 1816] [Cqoi2010] 扑克牌 【二分答案】

    题目链接:BZOJ - 1816 题目分析 答案具有可以二分的性质,所以可以二分答案. 验证一个答案 x 是否可行,就累加一下各种牌相对于 x 还缺少的量,如果总和超过了 x 或 m ,就不可行. 因 ...

  8. BZOJ 1052 HAOI2007 覆盖问题 二分法答案+DFS

    标题效果:特定n点.涵盖所有的点与同方三面.斧头要求方垂直边界,最小平方的需求方长值 最大值至少.答案是很明显的二分法 但验证是一个问题 考虑仅仅有三个正方形,故用一个最小矩形覆盖这三个正方形时至少有 ...

  9. P1578 奶牛浴场 有障碍点的最大子矩形

    这题咕咕了很久终于写了\(QwQ\) 思路:扫? 提交:2次 错因:数据差评,第一次把矩形的长宽搞反了竟然只有一个点没有\(A\). 题解: 显然能成为答案的矩形的边界一定有障碍点或者与大矩形边界重合 ...

随机推荐

  1. HDU1686 计算模式串匹配的次数

    题目大意: 输入一个T,表示有T组测试数据: 每组测试数据包括一个字符串W,T,T长度大于W小于1000000,w长度小于10000,计算W匹配到T中成功的次数: 这题很明显要用KMP算法,不然很容易 ...

  2. TJOI2014

    匹配 给出一个\(n(n\leq80)\)个点对\(n\)个点的带权二分图,求所有最大权匹配的交集. 先求出一个最大权匹配,然后枚举每一条匹配中的边,检验删除该边后是否还能形成最大权匹配.如果能则说明 ...

  3. 通过一个用户管理实例学习路由react-router-dom知识

    我们通过一个用户管理实例来学习react-router-dom 这个实例包括9个小组件 App.js 引入组件 Home.js 首页组件 User.js 用户管理组件 -  UserList.js 用 ...

  4. 【BZOJ1430】小猴打架(Prufer编码)

    题意:求n个点带编号生成树的不同加边序列个数 n<=10^6 思路: WJMZBMR:额.首先他们打架的关系是一颗无根树,就有n^(n-2)种情况,还有打架的顺序,是(n-1)!种,乘起来就可以 ...

  5. BZOJ——T 1707: [Usaco2007 Nov]tanning分配防晒霜

    http://www.lydsy.com/JudgeOnline/problem.php?id=1707 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 8 ...

  6. 跟着9张思维导图学JavaScript

    思维导图小tips 思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又极其有效,是一种革命性的思维工具.思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级图表现出来 ...

  7. db2安装配置备份还原

    环境 cenos 7.0 db2版本 db2_v101_linuxx64_expc.tar 安装db2 解压db2 tar zxvf db2_v101_linuxx64_expc.tar cd exp ...

  8. 选带傅里叶变换(zoom-fft)

    选带傅里叶变换的原理大家能够看书.大致的步骤为 移频 (将选带的中心频率移动到零频) 数字低通滤波器  (防止频率混叠) 又一次採样  (将採样的数据再次间隔採样,间隔的数据取决于分析的带宽,就是放大 ...

  9. Office EXCEL 创建图片超链接打不开怎么办 Excel打开图片提示发生了意外错误怎么办

    如下图所示,点击超链接提示无法打开指定的文件   如果使用Office打开,则提示发生了意外错误   你需要先把IE浏览器打开,这样就可以打开了,并非是图像的相对位置不正确导致的.      

  10. Oracle APEX 4.2安装和配置

    A standard Oracle 11.2.0.3 database installation comes bundled with Application Express (APEX) 3.2.1 ...