bzoj4716假摔

题意:

给出一个矩阵,求这个矩阵中权值和第k小的长在xmin到n之间,宽在ymin到m之间的子矩阵。n,m≤1000,k≤250000。

题解:

首先求出长为xmin,宽为ymin的子矩阵放入优先队列,每次取出时如果该矩阵之前没有出现过(用set判重),则将其扩展并放入优先队列,输出第k个不重复的(这里指位置不重复的,权值可以相等)。

代码:

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <set>
#define inc(i,j,k) for(int i=j;i<=k;i++)
#define maxn 1010
using namespace std; inline int read(){
char ch=getchar(); int f=,x=;
while(ch<''||ch>''){if(ch=='-')f=-; ch=getchar();}
while(ch>=''&&ch<='')x=x*+ch-'',ch=getchar();
return f*x;
}
int sum[maxn][maxn],n,m,xmin,ymin,k,tot;
struct nd{
int x,y,l,c,v;
bool operator < (const nd &a)const{
if(v!=a.v)return v>a.v; if(x!=a.x)return x<a.x; if(y!=a.y)return y<a.y;
if(l!=a.l)return l<a.l; return c<a.c;
};
};
priority_queue<nd>q; set<nd>st;
int main(){
n=read(); m=read(); xmin=read(); ymin=read(); k=read();
inc(i,,n)inc(j,,m){int x=read(); sum[i][j]=sum[i-][j]-sum[i-][j-]+sum[i][j-]+x;}
inc(i,,n-xmin+)inc(j,,m-ymin+){
q.push((nd){i,j,xmin,ymin,sum[i+xmin-][j+ymin-]-sum[i+xmin-][j-]-sum[i-][j+ymin-]+sum[i-][j-]});
}
while(!q.empty()){
nd x=q.top(); q.pop(); if(st.find(x)!=st.end())continue;
tot++; if(tot==k){printf("%d",x.v+); break;} st.insert(x);
if(x.x+x.l<=n)
q.push((nd){x.x,x.y,x.l+,x.c,sum[x.x+x.l][x.y+x.c-]-sum[x.x+x.l][x.y-]-sum[x.x-][x.y+x.c-]+sum[x.x-][x.y-]});
if(x.y+x.c<=m)
q.push((nd){x.x,x.y,x.l,x.c+,sum[x.x+x.l-][x.y+x.c]-sum[x.x+x.l-][x.y-]-sum[x.x-][x.y+x.c]+sum[x.x-][x.y-]});
if(x.x+x.l<=n&&x.y+x.c<=m)
q.push((nd){x.x,x.y,x.l+,x.c+,sum[x.x+x.l][x.y+x.c]-sum[x.x+x.l][x.y-]-sum[x.x-][x.y+x.c]+sum[x.x-][x.y-]});
}
return ;
}

20161110

bzoj4716假摔的更多相关文章

  1. bzoj4716 假摔

    Description [题目背景] 小Q最近喜欢上了一款游戏,名为<舰队connection>,在游戏中,小Q指挥强大的舰队南征北战,从而成为了一名 dalao.在游戏关卡的攻略中,可能 ...

  2. 【BZOJ4716】假摔 二分+暴力

    [BZOJ4716]假摔 Description [题目背景] 小Q最近喜欢上了一款游戏,名为<舰队connection>,在游戏中,小Q指挥强大的舰队南征北战,从而成为了一名dalao. ...

  3. 轮滑基础(一)(前摔,葫芦步,推步,A字转弯,弓步转弯)

    轮滑新手入门推荐? [柚子陪你学轮滑轮滑教学]第一集 轮滑安全 1,站: 站立:脚可以成v字,或者平行,手放膝盖或者前伸.平行站立 膝盖相距一拳头左右,两腿间距略小于肩宽.膝盖略弯,腰下压,抬头挺胸 ...

  4. fzu月赛 2203 单纵大法好 二分

    Accept: 8    Submit: 18Time Limit: 5000 mSec    Memory Limit : 65536 KB  Problem Description 人在做,天在看 ...

  5. CSS样式的特点与优先选择权

    CSS样式的特点:(子元素会继承父元素的某些样式,子元素有自己的样式就用自己的样式,没有的就用父元素的)      1.继承:              网页中子元素,将继承父元素的样式(比如要控制p ...

  6. CSS文字控制与文本控制

    一.CSS控制文字属性: 1.font-size:18px;:设置字号(默认是16px=1em),一般在制作网页的时候,先在body里同一设置下字体大小2.color:#093:设置字色3.font- ...

  7. CSS选择符类型

    一.标签选择符:针对某一类标签,可以以标签作为选择符 <style type="text/css"> p{color:#F00; font-size:36px;} &l ...

  8. CSS_简介/语法结构/长度单位/应用方式/标签的样式重置/表单样式重置

    一.CSS简介:  w3c(World Wide Web Consortium):万维网联盟,是规定网页标准的一个组织(叫做Web标准) Web标准:是由w3c和其他标准化组织制定的一系列标准的集合, ...

  9. HTML+CSS D08浮动

    1. <html> <head> <title>div浮动</title> <style type="text/css"> ...

随机推荐

  1. fastjson对String、JSONObject、JSONArray相互转换

    String——>>>JSONArray String st = "[{name:Tim,age:25,sex:male},{name:Tom,age:28,sex:mal ...

  2. LR脚本信息函数-lr_get_host_name

    lr_get_host_name() 返回主机的名称. char * lr_get_host_name(); lr_get_host_name函数返回执行脚本的机器的名称. 示例:lr_get_hos ...

  3. Spring Boot 分离资源文件打包

    Spring Boot项目默认的会打包成单一的jar文件,但是有时候我们并不想让配置文件.依赖包都跟可执行文件打包到一起.这时候可以在pom.xml文件中进行配置,从而使资源文件.依赖包和可执行文件分 ...

  4. Java 重写hashCode()与equals()

    为什么要重写hashCode() 和 equals() equals() 默认的Object类里面equals()方法是根据对象所在的内存来做判断的,如果两个对象引用指向的是同一个内存,则返回true ...

  5. Spring Boot 整合 Apollo

    简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场景 ...

  6. TestNG配合ant脚本进行单元测试

    上面就是一个简单的SSM框架的整合,数据库来自宜立方商城的e3-mall采用一个简单的spring-mvc和spring以及mybatis的整合 单元测试代码为 TestUserByTestNG.ja ...

  7. Python基础语法一

    所有内容都在代码上,有相关代码注释 # #代表注释 # 区分大小写.以回车换行结束 # 多行编写可以使用反斜杠 \ # 缩进代表一个代码块 #数值 #int类型可以使用下划线分割 c=123_456_ ...

  8. myeclipse集成jad反编译步骤

    (1) 将jad.exe放到java的jdk\bin目录下(2) 将jadeclipse插件net.sf.jadclipse_3.3.0.jar 拷贝到myeclipse安装目\Common\plug ...

  9. HttPclient 以post方式发送json

    使用HttpClient 以POST的形式发送json字符串 步骤: 1.url .parameters 2.创建httpClient对象 3.创建HttpPost对象 4.为post对象设置参数 5 ...

  10. WordPress教程之如何批量删除未引用(无用)的TAG标签

    WordPress文章与标签的关系 在WordPress中添加标签是非常方便的,只需要在写文章时在侧栏标签处添加一下就会自动在后台增加标签(所以你是不是也跟缙哥哥一样每篇文章都增加标签呢),不像分类目 ...