bzoj1127: [POI2008]KUP
Description
给一个n*n的地图,每个格子有一个价格,找一个矩形区域,使其价格总和位于[k,2k]
Input
输入k n(n<2000)和一个n*n的地图
Output
输出矩形的左上和右下的列-行坐标或NIE
Sample Input
4 3
1 1 1
1 9 1
1 1 1
inputdata2
8 4
1 2 1 3
25 1 2 1
4 20 3 3
3 30 12 2
Sample Output
NIE
outputdata2
2 1 4 2
题解:
http://blog.csdn.net/popoqqq/article/details/44625423
code:
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long int64;
char ch;
bool ok;
void read(int &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
const int maxn=;
int k,n,a[maxn][maxn],head,tail,last,h[maxn],top,l[maxn],r[maxn];
int64 sum[maxn][maxn];
int64 calc(int x,int y,int xx,int yy){return sum[xx][yy]-sum[xx][y-]-sum[x-][yy]+sum[x-][y-];}
struct Data{
int val,id;
}que[maxn],stack[maxn];
void output(int x,int y,int xx,int yy){
while (calc(x,y,xx,yy)>k*){
if (x==xx) y++;
else if (calc(x+,y,xx,yy)>=k) x++;
else xx--;
}
printf("%d %d %d %d\n",y,x,yy,xx);
exit();
}
void work(int x){
/*head=1,tail=0,last=1;
for (int i=1;i<=n;i++){
while (head<=tail&&que[tail].val>=h[i]) tail--;
que[++tail]=(Data){h[i],i};
while (head<=tail&&que[head].val==0) last=que[head++].id+1;
if (head<=tail&&calc(x-que[head].val+1,last,x,i)>=k) output(x-que[head].val+1,last,x,i);
}*/
top=;
for (int i=;i<=n+;i++){
while (top&&stack[top].val>h[i]) r[stack[top--].id]=i-;
stack[++top]=(Data){h[i],i};
}
top=;
for (int i=n;i>=;i--){
while (top&&stack[top].val>h[i]) l[stack[top--].id]=i+;
stack[++top]=(Data){h[i],i};
}
for (int i=;i<=n;i++)
if (h[i]) if (calc(x-h[i]+,l[i],x,r[i])>=k) output(x-h[i]+,l[i],x,r[i]);
}
int main(){
read(k),read(n);
for (int i=;i<=n;i++) for (int j=;j<=n;j++){
read(a[i][j]),sum[i][j]=sum[i][j-]+a[i][j];
if (k<=a[i][j]&&a[i][j]<=k*){printf("%d %d %d %d\n",j,i,j,i);return ;}
}
for (int i=;i<=n;i++) for (int j=;j<=n;j++) sum[i][j]+=sum[i-][j];
for (int i=;i<=n;i++){
for (int j=;j<=n;j++) h[j]=a[i][j]>k*?:h[j]+;
work(i);
}
puts("NIE");
return ;
}
bzoj1127: [POI2008]KUP的更多相关文章
- [BZOJ1127][POI2008] KUP子矩阵
Description 给一个n*n的地图,每个格子有一个价格,找一个矩形区域,使其价格总和位于[k,2k] Input 输入k n(n<2000)和一个n*n的地图 Output 输出矩形的左 ...
- bzoj1127[POI2008]KUP 悬线法
Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 485 Solved: 174[Submit][Status][D ...
- 【BZOJ-1127】KUP 悬线法 + 贪心
1127: [POI2008]KUP Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 317 Solved: 11 ...
- 1127: [POI2008]KUP
1127: [POI2008]KUP https://lydsy.com/JudgeOnline/problem.php?id=1127 分析: 如果存在一个点大于等于k,小于等于2k的话,直接输出. ...
- [BZOJ] 1127: [POI2008]KUP
似曾相识的感觉 考虑另一个判断问题,给定一个k,问这个k是否可行 存在矩形和\(sum>2k\),则该矩阵不对判定做出贡献 存在矩形和\(sum\in [k,2k]\),则我们找到了一个解 于是 ...
- bzoj 1127 [POI2008]KUP——思路(悬线法)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1127 大于2*K的视为不能选的“坏点”.有单个格子满足的就直接输出. 剩下的都是<K的 ...
- [POI2008]KUP
Description 给一个\(n\times n\)的地图,每个格子有一个价格,找一个矩形区域,使其价格总和位于[k,2k] Input 输入k n(n<2000)和一个\(n\times ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- [BZOJ1112][POI2008]砖块Klo
[BZOJ1112][POI2008]砖块Klo 试题描述 N柱砖,希望有连续K柱的高度是一样的. 你可以选择以下两个动作 1:从某柱砖的顶端拿一块砖出来,丢掉不要了. 2:从仓库中拿出一块砖,放到另 ...
随机推荐
- XML文件操作指南
一.XML简介 XML的全名是eXtensible Markup Language(可以扩展的标记语言),它的语法类似HTML,都是用标签来描述数据.HTML的标签是固定的,我们只能使用.不能修改: ...
- C语言学习_一个简单程序的解释与C学习方法概括
简单计算器程序示例: # include <stdio.h> //1.头文件 //2.加法函数 int add(int a,int b)//3.函数定义方式 { //4.函数体 retur ...
- winform 窗体最大化 分类: WinForm 2014-07-17 15:57 215人阅读 评论(0) 收藏
1:窗体首次加载时最大化 (1):主窗体 this.WindowState = FormWindowState.Maximized; //窗体显示中间部分,不显示窗体名称和最小化.最大化.关闭按钮 ...
- maven tomcat1.7环境下构建javaweb 项目
tomcat用户权限设置 在tomcat安装路径\conf目录下tomcat-users.xml添加: <role rolename="admin-gui"/> < ...
- 开发库比较(3) - Mobile Web 开发 - Sencha, jquerymobiel, phonejs, jqtouch, jqmobi
我们一直坚信Html/css在界面上最终会一统江湖,因为在众多的界面编写中,qt,gtk,wpf,win form, wxwidgets等等,只有Html/CSS是真正拥有统一标准,只有这个有潜力作用 ...
- 使用WinINet和WinHTTP实现Http訪问
使用WinINet和WinHTTP实现Http訪问 飘飘白云 l_zhaohui@163.com 2007-11-30 Http訪问有两种方式,GET和POST,就编程来说GET方式相对简单点,它不用 ...
- MVC ASPX(webForm)视图引擎 <%:%> 与<%=%>的差别
控制器 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syste ...
- redundant 行记录格式
CREATE TABLE `mytest2` ( `t1` varchar() DEFAULT NULL, `t2` varchar() DEFAULT NULL, `t3` ) DEFAULT NU ...
- c++拷贝构造函数(深拷贝,浅拷贝)详解
一.什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: ; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量. 下面 ...
- JAVA异常的捕获与抛出原则
在可能会出现exception的地方,要使用try-catch或者throws或者两者都要.我的判断依据是:如果对可能出现的exception不想被外部(方法的调用者)知道,就在方法内部try-cat ...