bzoj1057本质上是求最大子矩阵;

第一问是一个经典的O(n2)dp

第二问就是最大子矩阵,回眸一下当年卡了我很久的问题;

首先穷举显然不行(这不废话吗?);

首先我们预处理每个点可以最大向上延展到哪里;

然后我们一行一行看每个点能以最大延展高度向左右延展到多少

这其中的最大值即answer;

初看处理每行上点左右延展距离为O(n2)

实际上是可以以O(n)搞定的

单调队列?确实可以,但是很烦……

分左延展右延展两种情况考虑

用l[j]表示这行上列为j的点最远可以延伸到哪个点,然后

l[j]:=j;

while (l[j]>0) and (h[j]<=h[l[j]-1]) do l[j]:=l[l[j]-1];

妙哉,问题得解;

由这种思路,我以迅雷不急掩耳之势拍出poj3250,不到20行代码141MS过,不错!

 var a,d:array[..] of longint;
    p,i,n,m:longint;
    s:int64;
begin
  readln(n);
  for i:=n downto do
    readln(a[i]);
  a[]:=;
  d[]:=;
  for i:= to n do
  begin
    d[i]:=i;
    while a[i]>a[d[i]-] do d[i]:=d[d[i]-];
    s:=s+i-d[i];
  end;
  writeln(s);
end.

bzoj1057,poj3250的更多相关文章

  1. Pyhton开源框架(加强版)

    info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...

  2. MPlayer

    名称   mplayer − 电影播放器 mencoder − 电影编解码器 概要   mplayer [选项] [文件|URL|播放列表|−] mplayer [选项] 文件1 [指定选项] [文件 ...

  3. python 爬取腾讯微博并生成词云

    本文以延参法师的腾讯微博为例进行爬取并分析 ,话不多说 直接附上源代码.其中有比较详细的注释. 需要用到的包有 BeautifulSoup WordCloud jieba # coding:utf-8 ...

  4. 面经 cisco

    1. 优先级反转问题及解决方法 (1)什么是优先级反转 简单从字面上来说,就是低优先级的任务先于高优先级的任务执行了,优先级搞反了.那在什么情况下会生这种情况呢? 假设三个任务准备执行,A,B,C,优 ...

  5. linux驱动(续)

    网络通信 --> IO多路复用之select.poll.epoll详解 IO多路复用之select.poll.epoll详解      目前支持I/O多路复用的系统调用有 select,psel ...

  6. HttpServletRequest对象(一)

    javaweb学习总结(十)——HttpServletRequest对象(一) 一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HT ...

  7. 【ZJOI2007】棋盘制作 BZOJ1057

    Description 国 际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方 阵,对应八八六十四卦,黑白对 ...

  8. poj3250(单调栈模板题)

    题目链接:https://vjudge.net/problem/POJ-3250 题意:求序列中每个点右边第一个>=自身的点的下标. 思路:简单介绍单调栈,主要用来求向左/右第一个小于/大于自身 ...

  9. 洛谷 P1169||bzoj1057 [ZJOI2007]棋盘制作

    洛谷P1169 bzoj1057 这个题目跟最大全0子矩阵是类似的.正方形的话,只要把任意极大子正方形(”极大“定义见后面的”论文“)当成把某个极大子矩形去掉一块变成正方形即可,容易解决. 解法1:看 ...

随机推荐

  1. angularJs--$apply和$watch,$digest方法的意思

    这个视图对应的控制器是 这样的话,这个date变量,是不会发生改变的,没有触发脏检查,所以这时候要$apply方法,所有自定义的方法都要用$apply来触发脏检查 这样那个日期就会变化了 $diges ...

  2. PHP加解密相关函数

    openssl_public_encrypt()  - Encrypts data with public keyopenssl_public_decrypt()  - Decrypts data w ...

  3. HttpUnit学习笔记

    <!-- htmlUnit --> <dependency> <groupId>net.sourceforge.htmlunit</groupId> & ...

  4. jsp与servlet之间的参数传递【转】

    JSP与 servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP. 通过对象 request和 session (不考虑 application) ...

  5. ORACLE中常见的几种锁

    ORACLE中常见的几种锁: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusive 4 ...

  6. 通过telnet命令进行网络邮件发送

    1.建立smtp邮箱服务连接 open smtp.sina.com 2.连接上邮箱服务后进行握手操作 helo smtp.sina.com 3.输入帐号密码进行验证::此步后缓冲区会输出一些字符,你只 ...

  7. 插入排序(insertion_sort)

    最简单的排序算法,又称插值排序,原理类似于打扑克牌时把摸到的牌插入手中已有序牌的过程. void insertion_sort(int* A ,int n){ int i,j,key; ;i < ...

  8. 制作复选框(Toggle)

    怎样判断是否应当使用复选框 复选框,就是对一个选项做上一个标记,表示这个选项已经被选中了.在游戏中,复选框一般用来做一些选项的控制,这种选项一般都只有两种答案:是和否.例如,单击一下开启音乐的复选框, ...

  9. Lua中cJson的读写

    这里采用的是Lua CJson库,是一个高性能的JSON解析器和编码器,其性能比纯Lua库要高10~20倍.并且Lua Json完全支持UTF-8,无需以来其他非Lua/LuaJit相关包. 环境安装 ...

  10. Linq语句基础

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...