简要题意:

给你一个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. cookie详解(含vue-cookie)

    今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://mp.weixin.qq.com/s/NXrH7R8y2Dqxs9Ekm0u33w 原文如下,记录到此供以 ...

  2. 关键字搜索:jQuery过滤器插件fastLiveFilter||显示结果条数

    引用js库 <script src="jquery-1.6.4.min.js"></script> <script src="jquery. ...

  3. 个人作业Week1

    一.<构建之法>提问 1.需求是什么?需求的规范需要明确吗? 2.一个人开发效率非常高,多人开发,个人效率随团队人数上升而直线下降,我们一般需要将大项目拆为小项目,使协作耦合产生的效率负影 ...

  4. [2017BUAA软件工程]第0次个人作业

    第一部分: 结缘计算机 1. 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 有时候我也问自己这个问题,是因为认识的人中有人从事这个工作并且做得很好而产生了艳羡?是因为家长一次次催逼,想 ...

  5. 使用PHP + Apache访问有错误的php脚本时不报错

    遇到一个问题: 在命令行编辑php脚本后,直接使用php命令行执行该php脚本,如果脚本出现错误,在命令行的情况下会报错,显示错误信息,比如下面的情况. [root@localhost wwwroot ...

  6. Golang的panic和recover

    panic 关键字panic的作用是制造一次宕机,宕机就代表程序运行终止,但是已经“生效”的延迟函数仍会执行(即已经压入栈的defer延迟函数,panic之前的). 为什么要制造宕机呢?是因为宕机不容 ...

  7. HTML 5 placeHolder

    <html> <body> <input type="text" id="idNum" placeholder="pla ...

  8. Jmeter 通过json Extracted 来获取 指定的值的id

    在没有 精确或模糊查询的接口时可以使用jmeter 获取指定的值的ID import java.lang.String ; String getTargetName="iphone632g& ...

  9. js原生函数

    arguments:代表所有的形参的集合: 可以通过arguments: cosole.log(arguments):打印所有参数 console.log(arguments[i]);可以通过访问下标 ...

  10. 关于miniconda的安装,配置以及包批量安装和使用

    由于时间很晚了.就不写废话了. conda官方文档地址:http://conda.pydata.org/docs/ 一切其实都可以从miniconda的文档找到,这里只纪录自己操作的时候遇到的值得一说 ...