正题

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


题目大意

一个空矩阵,每次可以将B∗BB*BB∗B的矩阵覆盖为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);
}

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

  1. URAL 1203 Scientific Conference(贪心 || DP)

    Scientific Conference 之前一直在刷计算几何,邀请赛连计算几何的毛都买见着,暑假这一段时间就做多校,补多校的题目,刷一下一直薄弱的DP.多校如果有计算几何一定要干掉-.- 题意:给 ...

  2. Codeforces Round #699 (Div. 2) E.Sorting Books(贪心+DP / 线段树)超高质量题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 E - Sorting Books 一排书架上有 nnn 本书排成一排,每本书上有一个颜色 aia_i ...

  3. 【bzoj3174】[Tjoi2013]拯救小矮人 贪心+dp

    题目描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人,我们知道他从脚 ...

  4. HDU 4001 To Miss Our Children Time(2011年大连网络赛 A 贪心+dp)

    开始还觉得是贪心呢...  给你三类积木叫你叠楼房,给你的每个积木包括四个值:长 宽(可以互换) 高 类型d  d=0:你只能把它放在地上或者放在 长 宽 小于等于 自己的积木上面  d=1:你只能把 ...

  5. 【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]

    巴厘岛的雕塑 Time Limit: 10 Sec  Memory Limit: 64 MB [Submit][Status][Discuss] Description 印尼巴厘岛的公路上有许多的雕塑 ...

  6. 杭电oj1257最少拦截系统—贪心/dp最大递增子序列

    附上题目链接:杭电oj1257 这个题目有动态规划和贪心两种解决方式. 贪心法1: 对于导弹我们知道只可以从大到小的反导,一个系统必须从大到小排列.那么我们就可以选择从最高的那个导弹入手,往右找仅次于 ...

  7. CF1155D Beautiful Array 贪心,dp

    CF115DBeautiful Array 题目大意:给一个有n个元素的a数组,可以选择其中一个区间的所有数都乘上x,也可以不选,求最大子序列和. 如果没有前面的操作,就是只求最大子序列和,我们都知道 ...

  8. CodeForces - 1481E Sorting Books(贪心+dp)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,每次操作可以将任意一本书放到序列的末尾,问最少需要操作多少次,才能使得相同的数字挨在一起 题目分析:不难看出,对每个位置的数都操作一次,是 ...

  9. 2020ICPC(小米邀请赛2) - Knapsack(贪心+dp)

    题目链接:点击查看 题目大意:给出 n 个物品,每个物品都有体积和价值,现在问容量为 m 的背包最多可以装下多少价值的物品 题目分析:本题正解应该是斜率优化dp,然鹅看了大佬们的博客讲解后,感觉不是自 ...

最新文章

  1. 贝叶斯岭回归(BayesianRidge)、自动关联决策回归、高斯过程、核函数、及高斯回归、高斯过程分类
  2. 如何用计算机弹逆战6,逆战星光弹夹使用方法介绍 轻松玩转星光弹
  3. java课程设计图片浏览器_java课程设计图片浏览器
  4. 预言机、预言机网络、预测市场
  5. 唯有自己变得强大_真正的自立,唯是让自己变得更加强大
  6. 华为鸿蒙系统学习笔记3-方舟编译器介绍
  7. A.01.03-模块的输入—模拟量输入
  8. 几个学习git的地方
  9. soapui返回值类型都有哪些_小程序都有哪些类型,开发小程序效果如何
  10. 无线充电主控芯片方案
  11. SpringCloud Alibaba Nacos作为配置中心(三)----------yml格式配置文件
  12. jQuery锁定页面元素(表格列)
  13. python3怎么运行代码_python怎么运行代码
  14. android的otg功能,怎么打开手机OTG功能?
  15. 深圳市专利代理机构名单(截至2016年3月)
  16. USB设备无法识别也无法读取怎么办?
  17. 如何开通聚合商家收款码?
  18. 东南大学破格保研挂科_给挂科同学的建议
  19. 蒙特卡洛法求圆周率(python)
  20. 英威腾伺服驱动器故障代码_英威腾伺服电机常见问题及解决方法

热门文章

  1. 服务器精益改善系列,精益生产改善的内容是什么?
  2. python3抓取图片_通过Python3 爬虫抓取漫画图片
  3. linux适合搭建什么服务器吗,Linux 的三种服务器的搭建
  4. vs里面mfc是什么_最近!一大批人正在前往文安,究竟发生了什么?
  5. 软件构造学习笔记-第十二周
  6. 「软件项目管理」一文详解软件项目管理概述
  7. 10分钟带你探索css中更为奇妙的奥秘
  8. 4位BCD计数器设计
  9. C++拷贝构造函数调用时机分析
  10. [蓝桥杯2018初赛]全球变暖-dfs,bfs,连通块