P3100-[USACO14JAN]建造滑雪场【贪心,dp】

正题

题目链接:https://www.luogu.org/problemnew/show/P3100


题目大意

一个空矩阵,每次可以将B∗BB*BBB的矩阵覆盖为RRR或者BBB

BBB最大是多少使得可以覆盖使得原矩阵成为目标矩阵。


解题思路

我们考虑贪心,先分析一下性质。

假设答案为kkk,那么目标矩阵上必然有一个边长为kkk的同颜色正方形。当然考虑最优,我们会让kkk越大越好。

我们可以每次寻找一个同颜色的最大正方形,然后每次将这个正方形全都覆盖为两种颜色通用,直到所有的都被覆盖,每次取这个最大正方形的最小边长。

这时就有问题了,我们如何用dpdpdp计算时保证这个正方形内必定有没有被覆盖的情况呢???其实我们可以用一个vi,jv_{i,j}vi,j表示以vvv为右下角的最大矩阵是否覆盖,这样我们保证每次都找没有覆盖的情况就好了。

但是这是我们发现单单这样会TLETLETLE,那我们只有限制一下运行次数就可以了,因为若到后面,基本发现不了更小的正方形。


codecodecode

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,f[110][110],x,y,ans,sum;
int a[110][110],k,g[110][110];
bool v[110][110];
void get_ans()
{sum=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){f[i][j]=min(f[i-1][j-1],min(f[i-1][j],f[i][j-1]))+1;g[i][j]=min(g[i-1][j-1],min(g[i-1][j],g[i][j-1]))+1;if(a[i][j]==0) f[i][j]=0;if(a[i][j]==1) g[i][j]=0;if(v[i][j]||max(f[i][j],g[i][j])<=sum) continue;sum=max(f[i][j],g[i][j]);x=i;y=j;}v[x][y]=1;ans=min(ans,sum);for(int i=0;i<sum;i++)for(int j=0;j<sum;j++){if(a[x-i][y-j]!=3) k--;a[x-i][y-j]=3;}
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){char x;cin>>x;a[i][j]=(x=='R');}k=n*m;ans=n;for(int i=1;i<=5000&&k;i++) get_ans();printf("%d",ans);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Scala与Java差异(四)之数组操作

一、数组操作之Array、ArrayBuffer以及遍历数组 &#xff08;1&#xff09;Array 在Scala中&#xff0c;Array代表的含义与Java中类似&#xff0c;也是长度不可改变的数组。此外&#xff0c;由于Scala与Java都是运行在JVM中&#xff0c;双方可以互相调用&#xff0c;因此Scal…

(十三)RabbitMQ使用详解

RabbitMQ是基于AMQP的一款消息管理系统。AMQP(Advanced Message Queuing Protocol)&#xff0c;是一个提供消息服务的应用层标准高级消息队列协议&#xff0c;其中RabbitMQ就是基于这种协议的一种实现。 常见mq&#xff1a; ActiveMQ&#xff1a;基于JMSRabbitMQ&#xff1a;…

ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理

在ASP.NET Core Web API下事件驱动型架构的实现&#xff08;一&#xff09;&#xff1a;一个简单的实现中&#xff0c;我介绍了事件驱动型架构的一种简单的实现&#xff0c;并演示了一个完整的事件派发、订阅和处理的流程。这种实现太简单了&#xff0c;百十行代码就展示了一个…

和某ZYC巨佬和XXY巨佬的随机挑战2总结

前言 一切的起点在那个炎热的酷暑&#xff0c;菜的一批的WYCWYCWYC坐在最容易被∗*∗的左下角。这时他永远都想不到&#xff0c;他与巨佬之间的挑战&#xff0c;即将开始。 正题 规则 随机跳333到蓝题&#xff0c;然后写完。 完成记录 题目博客 T1:P3100−[USACO14JAN]T1:P31…

(十四)消息中间件MQ详解及四大MQ比较

一、消息中间件相关知识 1、概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能&#xff0c;成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件&#xff0c;如老牌的ActiveMQ、RabbitMQ&a…

jzoj3301-[集训队互测2013]家族【并查集,暴力】

正题 题目大意 一个图每个边有不同的频率&#xff0c;对于大小为xxx的联通可以共享价值wxw_xwx​。现在要去保留一段频率内的边&#xff0c;使得剩下的联通分量价值之和至少为KKK。 求最小的保留频率宽度。 解题思路 首先将频率进行排序&#xff0c;然后愉快的发现不满足二分…

g4e基础篇#3 Git安装与配置

现在你已经对Git有了最基本的了解&#xff0c;现在让我们开始动手开始安装和配置Git环境。Git工具包括Git命令行工具&#xff0c;图形化工具和服务器环境&#xff1b;在我们这个教程中&#xff0c;我们会使用以下软件配置我们的环境&#xff1a;• Windows 操作系统&#xff08…

Scala与Java差异(五)之Map与Tuple

一、 创建Map &#xff08;1&#xff09;创建Map // 创建一个不可变的Map val ages Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23) ages("Leo") 31 // 创建一个可变的Map val ages scala.collection.mutable.Map("…

jzoj3302-[集训队互测2013]供电网络【上下界网络流,费用流,动态加边】

正题 题目大意 若干个城市一些城市有一定的电&#xff0c;有些城市需要一定的电。对于第iii个城市购买一个电需要iniin_iini​&#xff0c;送出电需要outiout_iouti​。当然城市之间也可以相互传输电。 对于一条电缆(x,y,a,b,l,r)(x,y,a,b,l,r)(x,y,a,b,l,r)表示x−>yx-&g…

Mybatis生成器插件扩展,生成findInSet方法

Mybatis生成器插件扩展&#xff0c;生成findInSet方法 public Criteria andNameFindInSet(String value) {addCriterionPattern("find_in_set($value, name)", value, "name");return (Criteria) this;}public Criteria andNamePattern(String pattern, S…

[认证授权] 6.Permission Based Access Control

在前面5篇博客中介绍了OAuth2和OIDC&#xff08;OpenId Connect&#xff09;&#xff0c;其作用是授权和认证。那么当我们得到OAuth2的Access Token或者OIDC的Id Token之后&#xff0c;我们的资源服务如何来验证这些token是否有权限来执行对资源的某一项操作呢&#xff1f;比如…

P4841,jzoj3303-城市规划【NTT,多项式求逆,dp】

正题 题目链接:https://www.luogu.org/problemnew/show/P4841 题目大意 求nnn个点的简单联通无向图的个数。 解题思路 首先考虑n2n^2n2&#xff0c;我们设gig_igi​表示iii个点的简单无向图的个数&#xff0c;显然gi2n(n−1)2g_i2^{\frac{n(n-1)}{2}}gi​22n(n−1)​ 然后我…

微软发布PowerShell Core第一个版本:支持多平台开发

微软旗下的PowerShell团队正式宣布推出PowerShell Core 6.0&#xff0c;非常诡异的是这明明是Core的第一个版本&#xff0c;但是却用了一个6.0后缀的版本号。“这是我们对PowerShell做出的最大最重要的改变&#xff01;”微软技术研究员兼PowerShell创始人Jeffrey Snover在Twit…

Mybatis生成器插件扩展,定制方法生成,list参数生成

Mybatis生成器插件扩展&#xff0c;定制方法生成 public Criteria andNameIsEmpty() {addCriterion("name ");setCriterionPattern();return (Criteria) this;}public Criteria andNameFindInSet(String value) {addCriterion("find_in_set($value, name)"…

欢乐纪中某A组赛【2019.7.5】

前言 被花式暴虐&#xff0c;T1T1T1签到后两题神仙 成绩 JJJ表示初中&#xff0c;HHH表示高中后面加的是几年级 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC111(J−3)ZZY(J-3)ZZY(J−3)ZZY200200200100100100100100100000888(J−3)WHF(J-3)WHF(J−3)WHF145145145…

Mybatis生成器插件扩展,生成OR操作

Mybatis生成器插件扩展&#xff0c;生成OR操作 ManExample example new ManExample();ManExample.Criteria and example.createCriteria();and.andNameIsEmpty().andNameFindInSet("a").andNameFindInSetIn(Arrays.asList("1", "2", "3&q…

.NET Core单文件发布静态编译AOT CoreRT

.NET Core单文件发布静态编译AOT CoreRT&#xff0c;将.NET Core应用打包成一个可执行文件并包含运行时。支持Windows, MacOS and Linux x64 w/ RyuJIT codegen。示例项目&#xff1a;https://github.com/dotnet/corert/tree/master/samples/WebApi下面来实际体验。首先确保安装…

2019纪中暑假游记+总结

Travels总篇\texttt{Travels总篇}Travels总篇 7/4\texttt{7/4}7/4 下午才去纪中&#xff0c;早上就一大早和同学出去玩&#xff0c;看了蜘蛛侠然后到3点多才出发。 因为走南沙大桥所以很快就到了(具体有多快忘了&#xff0c;反正路上一点都不塞车)。就愉快的去整理宿舍洗个早…

使用xUnit为.net core程序进行单元测试(上)

一. 导读为什么要编写自动化测试程序&#xff08;Automated Tests&#xff09;&#xff1f;可以频繁的进行测试可以在任何时间进行测试&#xff0c;也可以按计划定时进行&#xff0c;例如&#xff1a;可以在半夜进行自动测试。肯定比人工测试要快。可以更快速的发现错误。基本上…

select2删除选中项,allowClear设置

转载自 select2删除选中项&#xff0c;allowClear设置 在使用select2过程中&#xff0c;有时候需要删除我们选中的选项&#xff0c;如下图&#xff1a; 这时候就需要设置select2的allowClear属性了。 有两种方法&#xff1a; 第一种&#xff1a; 直接用select2定义的一个c…