题目: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. MVC4 上传图片并生成缩略图

    Views @using (Html.BeginForm("Create","img",FormMethod.Post, new { enctype = &qu ...

  2. python学习笔记--python简介

    一.什么是python? python是一种面向对象.解释型的高级程序语言.python具有语法简洁.易于学习.功能强大,可扩展性强,跨平台等诸多特点.1989年开始开发,于1991年发布第一个公开发 ...

  3. java多线程调试

    1. 多线程调试 https://blog.csdn.net/bramzhu/article/details/52367052 https://www.jb51.net/article/129632. ...

  4. 深入理解计算机操作系统——第11章:全球IP英特网

    全球IP英特网 (1)每台英特网主机都运行实现TCPIP协议的软件. (2)英特网的客户端和服务器混合使用套接字接口函数和Unix IO函数来进行通信. (3)套接字函数典型的是作为陷入内核的系统调用 ...

  5. windows7 下安装使用memcached(二)

    Memcached 安装使用 本地环境:Windows7 64位web环境:wamp集成环境,php版本:PHP Version 7.1.17 学习参考网站: RUNOOB.COM官网  http:/ ...

  6. poj1273最大流初破

    第一次网络流,学了一天的DINIC算法(个人比较愚),切了这个入门题,开始的时候怎么调连 测试都过不了,后来发现犯了一个低级错误!把判断条件放在for(:)!里面和放在for下面大大 不同啊!里面的话 ...

  7. 怎么删除"自豪地采用WordPress"

    wordpress刚刚安装完毕,打开默认的主页,会发现底部有这样的一行文字:“自豪地采用WordPress”.当然了,我们做一个网站,不一定需要这些文字,我们可以删除或者修改这些文字.今天,小编就来教 ...

  8. Pycharm工具配置记录

    安装Pycharm工具后,常用配置方法记录: 1:开启“设置”快捷按钮 2:进入设置后,选择或添加python解释器 当然,python解释器需要提前安装好. 3:在设置里,配置默认模板 4 :自动更 ...

  9. spring mvc技术

                                                     spring mvc之访问路径        1. @RequestMapping这个注解  在实际项 ...

  10. Java日志框架-logback配置文件参考(转)

    logback.xml <!-- if debug set to true, context info always print otherwise the contex info will p ...