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

news/2024/11/20 17:11:31/

正题

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


题目大意

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

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


解题思路

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

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

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

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

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


c o d e code code

#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.ppmy.cn/news/152909.html

相关文章

英特尔发布数据中心级P3100 NVMe M.2 SSD新品

数据中心每天流动的数据&#xff0c;远超普通用户一生所能够产生。正在消费级市场变得越来越普及的固态硬盘&#xff08;SATA SSD&#xff09;&#xff0c;也早已在数据中心取得了广泛的应用&#xff0c;但M.2规格却是个例外。据外媒报道&#xff0c;英特尔刚刚推出了数据中心级…

来自6种编程语言的祝福:欢乐六一儿童节

六一儿童节的由来是为了纪念在法西斯侵略战争中死难的儿童&#xff0c;反对帝国主义的虐杀和毒害儿童&#xff0c;保障儿童权利。1949年11月&#xff0c;国际民主妇女联合会在莫斯科召开大会&#xff0c;决定每年的6月1日为全世界少年儿童的节日&#xff0c;即国际儿童节。 六一…

代码随想录算法训练营第五十一天 | 力扣 309.最佳买卖股票时机含冷冻期, 714.买卖股票的最佳时机含手续费

309.最佳买卖股票时机含冷冻期 题目 309. 最佳买卖股票时机含冷冻期 给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一…

动态规划.背包问题--填满背包的最大价格(java)

背包问题--填满背包的最大价格 题目描述暴力递归解题思路代码演示 动态规划解题思路代码演示 动态规划专题 题目描述 背包问题 给定两个长度都为N的数组weights和values&#xff0c;weights[i]和values[i]分别代表 i号物品的重量和价值 给定一个正数bag&#xff0c;表示一个载重…

Computer:IPFS(星际文件系统)的简介、安装、使用方法之详细攻略

Computer&#xff1a;IPFS(星际文件系统)的简介、安装、使用方法之详细攻略 目录 IPFS的简介 1、IPFS的应用 IPFS的安装 IPFS的使用方法 1、下载文件 第一步&#xff0c;启动IPFS节点 第二步&#xff0c;获取文件的CID 第三步&#xff0c;下载文件 IPFS的简介 星际文件…

网咖虚拟服务器主机,为什么网吧的主机这么便宜??但是玩大型游戏又不卡

原标题&#xff1a;为什么网吧的主机这么便宜&#xff1f;&#xff1f;但是玩大型游戏又不卡 经常到正规网吧玩游戏的朋友就会发现&#xff0c;网吧电脑玩起来很流畅&#xff0c;是什么原因&#xff0c;难道它们配置很高吗&#xff1f;其实它们的配置也不是很高&#xff0c;只是…

如何配置一台计算机预计3500元,玩游戏用的电脑主机应该怎么配置?3500元组装游戏电脑主机配置推荐...

本文转自:http://www.dn010.com/peizhi/950.html 玩游戏用的电脑主机应该怎么配置?喜欢玩游戏的朋友都想配置一台游戏电脑,今天电脑组装知识网给大家带来3500元组装游戏电脑主机配置推荐,主机的价位在3500元,很符合主流游戏用户的价格区间,高特效LOL,cf,中特效吃鸡、大…

计算机应该玩什么游戏,电脑玩游戏主要靠什么配置

现如今的很多网友都喜欢玩大型的网络游戏,但是,在玩游戏的同时很多时候会发现自己的电脑的配置跟不上,以下,小编会给大家简要的介绍一下,并且会举一些大家常玩的网络大型游戏的装备。 一、电脑玩游戏主要靠的是什么? 1、显卡,在看所有的配置之前,肯定首要的就是显卡。现…