前四题过水

E

枚举正方形的上边界所在行。对于第 \(i\) 行一个没洞的位置 \((i,j)\),我们尝试求出以它为右上角的无洞正方形个数。

结论:设以 \((i,j-1)\) 为右上角的无洞正方形边长最大为 \(len\),那以 \((i,j)\) 为右上角的无洞正方形边长最大为 \(len + 1\)。

以 \((i,j)\) 为右上角的边长为 \(len+2\) 的无洞正方形包含了以 \((i,j-1)\) 为右上角的边长为 \(len+1\) 的无洞正方形,矛盾。

而以 \((i,j)\) 为右上角边长能为 \(len+1\) 的充要条件是:

  1. \((i,j)\) 往下 \(len+1\) 个格子都无洞;

  2. \((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)\) 为右下角的无洞正方形个数)

F

有一个矩阵,一些格子已经被染成黑色。你可以把剩下的格子任意选一些染成黑色。有多少种染色方案使得每个黑格 \((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\) 列的最高黑格高度。

然后就是正常转移,加上前缀和优化

G

找出矩形使得(矩阵和 \(\times\) 矩阵最小值)最大。

直接暴力枚举最小值,然后使用悬线法

ABC 311的更多相关文章

  1. 【IOS】将一组包含中文的数据按照#ABC...Z✿分组

    上一篇文章[IOS]模仿windowsphone列表索引控件YFMetroListBox里面 我们一步步的实现了WindowsPhone风格的索引. 但是有没有发现,如果你要实现按照字母排序,你还得自 ...

  2. 在JS中关于堆与栈的认识function abc(a){ a=100; } function abc2(arr){ arr[0]=0; }

    平常我们的印象中堆与栈就是两种数据结构,栈就是先进后出:堆就是先进先出.下面我就常见的例子做分析: main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main( ...

  3. 学习Python的ABC模块(转)

    http://yansu.org/2013/06/09/learn-Python-abc-module.html 1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助a ...

  4. 将abc的全排列输出

    #include "iostream" using namespace std; void swap(char a[],int i,int j){ char temp; temp= ...

  5. 关于String str =new String("abc")和 String str = "abc"的比较

    String是一个非常常用的类,应该深入的去了解String 如: String str =new String("abc") String str1 = "abc&qu ...

  6. IE9 使用document.getElementsByName("abc") 不能获取到名称相同SPAN元素

    <div name="abc"></div> <input name="abc" type="text" /& ...

  7. 经典String str = new String("abc")内存分配问题

    出自:http://blog.csdn.net/ycwload/article/details/2650059 今天要找和存储管理相关的一些知识,网上搜了半天也没有找到完善的(30%的程度都不到),没 ...

  8. 再谈ABC

    最近一直在看蒋老师那13篇<我的WCF之旅>,终于看完了,看得很慢,记得最初出来工作的时候那时的技术总监建议我去看的,可几个月前我才开始看,看了几个月才把13篇看完.第一篇WCF的博文是我 ...

  9. Redis学习笔记之ABC

    Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...

  10. WCF ABC

    参考文献 http://blog.sina.com.cn/s/blog_7358f8b201012pnt.html http://www.cnblogs.com/CodingPerfectWorld/ ...

随机推荐

  1. sipp3.6多方案压测脚本

    概述 SIP压测工具sipp,免费,开源,功能足够强大,配置灵活,优点多. 有时候我们需要模拟现网的生产环境来压测,就需要同时有多个sipp脚本运行,并且需要不断的调整呼叫并发. 通过python脚本 ...

  2. C#设计模式12——代理模式的写法

    1. 什么是代理模式? 代理模式是一种结构型设计模式,它允许通过代理对象来控制对真实对象的访问,以提供额外的功能或控制访问权限. 2. 代理模式的作用是什么? 代理模式可以为对象提供保护代理.远程代理 ...

  3. C#实现斐波拉切数列求和

    C#实现斐波拉切数列求和 private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear();//清空Lis ...

  4. macOX常用快捷键(结尾有彩蛋)

    macOX的快捷键与windows10有所不同,了解了以后会更加提高我们的工作效率. Mac中主要有四个修饰键,分别是Command,Control,Option和Shift. 一.基本的快捷键: C ...

  5. Mongo库表占用空间统计

    1. 背景 DBA同事反馈说Mongp集群磁盘占用空间过大,超过监控告警95%阈值,因此建议删除部分资源或者申请扩容,本着开源节流的理念,还是乖乖看哪些老数据应该删除.但Mongo中的库和表过多,因此 ...

  6. 9 时序数据库M3DB架构与原理

    一.M3DB介绍 M3DB是Uber开源的一款分布式时序数据库,已在Uber内部使用多年.M3DB有以下特性: 分布式的时序数据库,可以水平扩展存储. 支持Pormetheus的查询语言PromQL, ...

  7. 如何让golang的web服务热重载

    有很多方法可以热重载 golang Web 应用程序或 golang 程序. 我选择gin(不是web gin框架)来进行热重载. 首先在 GOPATH/bin下安装gin,命令如下所示: go ge ...

  8. 【MicroPython】 mp对象和 c 类型的转换

    [来源]https://www.eemaker.com/micropython-mp-toc.html

  9. Vue-自定义icon实现

    在项目中引入了element-ui之后,发现其内置的icon有限,无法满足项目的需求,因此需自定义icon来实现需求. 在vue项目的components下新建SvgIcon目录,在SvgIcon目录 ...

  10. CentOS7挂载webdav添加开机启动

    CentOS7挂载webdav添加开机启动 一.安装davfs2 yum install davfs2 二.挂载 1.新建挂载位置 mkdir -p /guazai chmod +x /guazai ...