简要题意:

给你一个n * n的非负矩阵,求问是否有子矩阵满足和在[k, 2k]之间。若有输出方案。n<=2000。

解:

首先n4暴力很好想(废话),然后发现可以优化成n3log2n,但是还是过不了.....

正解十分之玄妙.....

首先所有大于2k的都不可用。

然后若有一个子矩阵的和不小于k,那么一定有解,且解是这个矩阵的一个子矩阵。

证:

当这个矩阵的和大于2k时,切这个矩阵。

一定有一块大于k。

然后就这样了......

具体实现就看代码了。

 #include <cstdio>
#include <algorithm> typedef long long LL;
const int N = ;
const LL INF = (1ll << ) - ; LL G[N][N], sum[N][N];
int h[N][N], l[N], r[N], p[N], top; inline LL getsum(int left, int right, int u, int d) {
return sum[d][right] - sum[d][left - ] - sum[u - ][right] + sum[u - ][left - ];
} int main() { int n, m;
LL k;
scanf("%lld%d", &k, &n);
m = n;
for(int i = ; i <= n; i++) {
for(int j = ; j <= m; j++) {
scanf("%lld", &G[i][j]);
sum[i][j] = sum[i][j - ] + sum[i - ][j] - sum[i - ][j - ] + G[i][j];
}
} for(int j = ; j <= m; j++) {
for(int i = ; i <= n; i++) {
if(G[i][j] > (k << )) {
h[i][j] = ;
}
else {
h[i][j] = h[i - ][j] + ;
}
//printf("h %d %d %d \n", i, j, h[i][j]);
}
} LL large = -INF;
int u, d, left, right; for(int i = ; i <= n; i++) { // down
top = ;
p[] = ;
for(int j = ; j <= m; j++) {
while(top && h[i][p[top]] >= h[i][j]) {
top--;
}
l[j] = p[top] + ;
p[++top] = j;
}
top = ;
p[] = m + ;
for(int j = m; j >= ; j--) {
while(top && h[i][p[top]] >= h[i][j]) {
top--;
}
r[j] = p[top] - ;
p[++top] = j;
} for(int j = ; j <= m; j++) {
LL t = getsum(l[j], r[j], i - h[i][j] + , i);
if(t > large) {
large = t;
u = i - h[i][j] + ;
d = i;
left = l[j];
right = r[j];
}
}
} if(large < k) {
printf("NIE");
return ;
} while(large > (k << )) {
if(u < d) {
int mid = (u + d) >> ;
if(getsum(left, right, u, mid) >= k) {
d = mid;
}
else {
u = mid + ;
}
}
else {
int mid = (left + right) >> ;
if(getsum(left, mid, u, d) >= k) {
right = mid;
}
else {
left = mid + ;
}
}
large = getsum(left, right, u, d);
} printf("%d %d %d %d", left, u, right, d); return ;
}

AC代码

洛谷P3474 KUP-Plot purchase的更多相关文章

  1. 给洛谷填坑的spj……

    这里提供了洛谷某些题的$special\ judge$,供需要的oier拿过去对拍. 1.P3825 #include "testlib.h" using namespace st ...

  2. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  3. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  4. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  5. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  6. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  7. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  8. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  9. 洛谷八月月赛Round1凄惨记

    个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...

随机推荐

  1. win10系统安装web3js的正确方法(2)

    信渤网络科技是一家基于互联网信息服务的区块链技术公司,专业提供区块链技术培训,智能合约定制开发,文字图片数据存证上链等服务,为相关企业提供区块链应用落地项目的技术方案 崇尚代码即法律,做一个智能合约开 ...

  2. html绝对路径,相对路径

    .com/eat.php中引用.com/includes/headrt.php的话写includes/header.php .com/service/eat.php中引用.com/includes/h ...

  3. Linux系统本地yum源环境配置记录

    由于IDC的一些服务器没有外网,不能对外访问.所以打算部署一套内网的yum源环境,以供内网服务器使用.以下简单记录下操作过程: 1)下载centos6.9和centos7.3的镜像,并挂载 [root ...

  4. 《吃了么》Alpha版本发布说明

    1.功能描述  功能一  查询周边餐厅 选中一条后,会跳转到相应餐厅的网址,获取具体的信息: 功能二 查询指定地点地餐厅 功能三 查询菜谱 具体的菜谱: 还有收藏夹的功能,点击标题栏的心形图标可以将菜 ...

  5. 【MOOC EXP】Linux内核分析实验六报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程的描述和进程的创建 知识点梳理: ...

  6. 《Linux内核设计与实现》读书笔记——第四章

    标签(空格分隔): 20135321余佳源 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. ...

  7. 第一个Sprint第一天

    第一个Sprint冲刺的第一天 组员:陈建定 陈友沛 林清松 我们小组选的题目是小学四则运算APP 之前我们都没有做过这个程序,不过我们会尽力完成. 第一阶段的冲刺我们主要分析这个APP的所需的功能, ...

  8. Java Script正则表达式语法学习

    今天在做页面交互验证时,在HTML里面第一反应居然用了Java 处理正则表达式的语法... ---------------------------------题记 学习来源 http://www.ru ...

  9. Under the same directory(folder) copy or rename with the different extension name

    @echo offsetlocal EnableDelayedExpansionfor /f "delims=" %%i in ('dir *.vm /q/s/b') do ( c ...

  10. js原生常用事件event

    onblur 元素失去焦点: onchange用户改变域的内容: onclick鼠标点击对象: onerror当加载图片时发生错误: onfocus 元素获得焦点: onkeypress某个键盘的键被 ...