简要题意:

给你一个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. C#断点续传下载。

    断点续传 最近在优化之前的下载流程,仅此篇幅留作笔记之用,日后其他研究此类问题的伙伴可以马上了解原理和开发,减少开发成本. 原理:断点续传目前比较通用的是使用HTTP续传方式,相关的资料可以通过访问: ...

  2. Effective C++学习笔记之#define

    前言 条款02:尽量以const.enum.inline替换#define:尽可能用编译器代替不必要的预处理器. 内容 一.对于单纯常量 1.const 有两种特殊的const,常量指针和class专 ...

  3. Spark Streaming简介及原理

    简介: SparkStreaming是一套框架. SparkStreaming是Spark核心API的一个扩展,可以实现高吞吐量的,具备容错机制的实时流数据处理. 支持多种数据源获取数据: Spark ...

  4. Docker容器学习梳理 - 容器硬盘热扩容

    前面已介绍了docker很多知识点的操作记录,今天这里梳理下docker容器空间扩展的操作.默认情况下,物理机下创建的docker容器的空间是10G(虚拟机下创建的docker容器空间就是虚拟机的空间 ...

  5. 牛客网-小白月赛6-J-洋灰三角

    题目链接https://www.nowcoder.com/acm/contest/136/J 这题我还是不找规律了,老老实实推吧,传说找规律也可以,我还是算了 递推式:f(n)=k*f(n-1)+p ...

  6. 个人作业Week2-代码复审(修改明确了要求)

    代码复审 零,说在前面的话 大家完成了个人项目之后,都写了很多代码. 这些代码可能: 大括号换行/不换行 使用tab缩进/使用空格缩进 变量名函数名的定义很好/不好 每个函数都有详细的注释解释函数的功 ...

  7. 11.14 Daily Scrum

    实现推荐菜谱时遇到问题,这个功能要和数据库和服务器有关,所以暂时放在一边,可能在beta版本实现. 部分成员已经完成基本任务,进行完善.   Today's Task Tomorrow's Task ...

  8. [Beta阶段]展示博客

    一.团队成员简介与个人博客地址 团队博客地址:http://www.cnblogs.com/wowotoubuaa/ 江昊,项目经理http://www.cnblogs.com/haoj/ 王开,后端 ...

  9. java中定时执行任务

    现在项目中用到需要定时去检查文件是否更新的功能.timer正好用于此处. 用法很简单,new一个timer,然后写一个timertask的子类即可. 代码如下: package comz.autoup ...

  10. 第三个Sprint冲刺总结

    第三个Sprint冲刺总结 1.燃尽图 2.本阶段总结: 本阶段主要是对产品进行完善和美化,所以工作量不是很多.但要做精,做好并非是一件简单的事情.我们各组员都安排了各自的任务,如参考各行业的优秀ap ...