ABC 311
前四题过水
枚举正方形的上边界所在行。对于第 \(i\) 行一个没洞的位置 \((i,j)\),我们尝试求出以它为右上角的无洞正方形个数。
结论:设以 \((i,j-1)\) 为右上角的无洞正方形边长最大为 \(len\),那以 \((i,j)\) 为右上角的无洞正方形边长最大为 \(len + 1\)。
以 \((i,j)\) 为右上角的边长为 \(len+2\) 的无洞正方形包含了以 \((i,j-1)\) 为右上角的边长为 \(len+1\) 的无洞正方形,矛盾。
而以 \((i,j)\) 为右上角边长能为 \(len+1\) 的充要条件是:
\((i,j)\) 往下 \(len+1\) 个格子都无洞;
\((i,j+len)\) 往左 \(len+1\) 个格子都无洞。
预先记录 \(lft[i][j],dwn[i][j]\) 表示从 \((i,j)\) 往左/下第一次碰到洞是什么地方。\(O(n^2)\) 预处理。
另外,如果 \((i,j)\) 不能达到 \(len+1\),那边长最大为 \(dwn[i][j]-i+1.\)
然后可以扫一遍行,每行找所有无洞的位置,每个位置 \(ans+=\) 这个位置右上角的最大边长。
\(O(n^2)\)。
(官方发的题解貌似是 dp,\(dp[i][j]\) 表示以 \((i,j)\) 为右下角的无洞正方形个数)
有一个矩阵,一些格子已经被染成黑色。你可以把剩下的格子任意选一些染成黑色。有多少种染色方案使得每个黑格 \((i,j)\),\((i+1,j)\) 和 \((i+1,j+1)\) 都是黑格?
\(dp[i][j]\) 表示前 \(i\) 列,第 \(i\) 列最高黑格位置是第 \(j\) 行的方案数。
容易发现 \(dp[i-1][j+2\sim n]\) 不能转移到 \(dp[i][j]\),其他 \(dp[i - 1][]\) 都可以。
同时注意 \(dp[i][j]\) 的 \(j\ge\) 第 \(i\) 列的最高黑格高度。
然后就是正常转移,加上前缀和优化。
找出矩形使得(矩阵和 \(\times\) 矩阵最小值)最大。
直接暴力枚举最小值,然后使用悬线法。
ABC 311的更多相关文章
- 【IOS】将一组包含中文的数据按照#ABC...Z✿分组
上一篇文章[IOS]模仿windowsphone列表索引控件YFMetroListBox里面 我们一步步的实现了WindowsPhone风格的索引. 但是有没有发现,如果你要实现按照字母排序,你还得自 ...
- 在JS中关于堆与栈的认识function abc(a){ a=100; } function abc2(arr){ arr[0]=0; }
平常我们的印象中堆与栈就是两种数据结构,栈就是先进后出:堆就是先进先出.下面我就常见的例子做分析: main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main( ...
- 学习Python的ABC模块(转)
http://yansu.org/2013/06/09/learn-Python-abc-module.html 1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助a ...
- 将abc的全排列输出
#include "iostream" using namespace std; void swap(char a[],int i,int j){ char temp; temp= ...
- 关于String str =new String("abc")和 String str = "abc"的比较
String是一个非常常用的类,应该深入的去了解String 如: String str =new String("abc") String str1 = "abc&qu ...
- IE9 使用document.getElementsByName("abc") 不能获取到名称相同SPAN元素
<div name="abc"></div> <input name="abc" type="text" /& ...
- 经典String str = new String("abc")内存分配问题
出自:http://blog.csdn.net/ycwload/article/details/2650059 今天要找和存储管理相关的一些知识,网上搜了半天也没有找到完善的(30%的程度都不到),没 ...
- 再谈ABC
最近一直在看蒋老师那13篇<我的WCF之旅>,终于看完了,看得很慢,记得最初出来工作的时候那时的技术总监建议我去看的,可几个月前我才开始看,看了几个月才把13篇看完.第一篇WCF的博文是我 ...
- Redis学习笔记之ABC
Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...
- WCF ABC
参考文献 http://blog.sina.com.cn/s/blog_7358f8b201012pnt.html http://www.cnblogs.com/CodingPerfectWorld/ ...
随机推荐
- sipp3.6多方案压测脚本
概述 SIP压测工具sipp,免费,开源,功能足够强大,配置灵活,优点多. 有时候我们需要模拟现网的生产环境来压测,就需要同时有多个sipp脚本运行,并且需要不断的调整呼叫并发. 通过python脚本 ...
- C#设计模式12——代理模式的写法
1. 什么是代理模式? 代理模式是一种结构型设计模式,它允许通过代理对象来控制对真实对象的访问,以提供额外的功能或控制访问权限. 2. 代理模式的作用是什么? 代理模式可以为对象提供保护代理.远程代理 ...
- C#实现斐波拉切数列求和
C#实现斐波拉切数列求和 private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear();//清空Lis ...
- macOX常用快捷键(结尾有彩蛋)
macOX的快捷键与windows10有所不同,了解了以后会更加提高我们的工作效率. Mac中主要有四个修饰键,分别是Command,Control,Option和Shift. 一.基本的快捷键: C ...
- Mongo库表占用空间统计
1. 背景 DBA同事反馈说Mongp集群磁盘占用空间过大,超过监控告警95%阈值,因此建议删除部分资源或者申请扩容,本着开源节流的理念,还是乖乖看哪些老数据应该删除.但Mongo中的库和表过多,因此 ...
- 9 时序数据库M3DB架构与原理
一.M3DB介绍 M3DB是Uber开源的一款分布式时序数据库,已在Uber内部使用多年.M3DB有以下特性: 分布式的时序数据库,可以水平扩展存储. 支持Pormetheus的查询语言PromQL, ...
- 如何让golang的web服务热重载
有很多方法可以热重载 golang Web 应用程序或 golang 程序. 我选择gin(不是web gin框架)来进行热重载. 首先在 GOPATH/bin下安装gin,命令如下所示: go ge ...
- 【MicroPython】 mp对象和 c 类型的转换
[来源]https://www.eemaker.com/micropython-mp-toc.html
- Vue-自定义icon实现
在项目中引入了element-ui之后,发现其内置的icon有限,无法满足项目的需求,因此需自定义icon来实现需求. 在vue项目的components下新建SvgIcon目录,在SvgIcon目录 ...
- CentOS7挂载webdav添加开机启动
CentOS7挂载webdav添加开机启动 一.安装davfs2 yum install davfs2 二.挂载 1.新建挂载位置 mkdir -p /guazai chmod +x /guazai ...