P3100-[USACO14JAN]建造滑雪场【贪心,dp】
正题
题目链接: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】相关推荐
- URAL 1203 Scientific Conference(贪心 || DP)
Scientific Conference 之前一直在刷计算几何,邀请赛连计算几何的毛都买见着,暑假这一段时间就做多校,补多校的题目,刷一下一直薄弱的DP.多校如果有计算几何一定要干掉-.- 题意:给 ...
- Codeforces Round #699 (Div. 2) E.Sorting Books(贪心+DP / 线段树)超高质量题解,看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 E - Sorting Books 一排书架上有 nnn 本书排成一排,每本书上有一个颜色 aia_i ...
- 【bzoj3174】[Tjoi2013]拯救小矮人 贪心+dp
题目描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人,我们知道他从脚 ...
- HDU 4001 To Miss Our Children Time(2011年大连网络赛 A 贪心+dp)
开始还觉得是贪心呢... 给你三类积木叫你叠楼房,给你的每个积木包括四个值:长 宽(可以互换) 高 类型d d=0:你只能把它放在地上或者放在 长 宽 小于等于 自己的积木上面 d=1:你只能把 ...
- 【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]
巴厘岛的雕塑 Time Limit: 10 Sec Memory Limit: 64 MB [Submit][Status][Discuss] Description 印尼巴厘岛的公路上有许多的雕塑 ...
- 杭电oj1257最少拦截系统—贪心/dp最大递增子序列
附上题目链接:杭电oj1257 这个题目有动态规划和贪心两种解决方式. 贪心法1: 对于导弹我们知道只可以从大到小的反导,一个系统必须从大到小排列.那么我们就可以选择从最高的那个导弹入手,往右找仅次于 ...
- CF1155D Beautiful Array 贪心,dp
CF115DBeautiful Array 题目大意:给一个有n个元素的a数组,可以选择其中一个区间的所有数都乘上x,也可以不选,求最大子序列和. 如果没有前面的操作,就是只求最大子序列和,我们都知道 ...
- CodeForces - 1481E Sorting Books(贪心+dp)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,每次操作可以将任意一本书放到序列的末尾,问最少需要操作多少次,才能使得相同的数字挨在一起 题目分析:不难看出,对每个位置的数都操作一次,是 ...
- 2020ICPC(小米邀请赛2) - Knapsack(贪心+dp)
题目链接:点击查看 题目大意:给出 n 个物品,每个物品都有体积和价值,现在问容量为 m 的背包最多可以装下多少价值的物品 题目分析:本题正解应该是斜率优化dp,然鹅看了大佬们的博客讲解后,感觉不是自 ...
最新文章
- 贝叶斯岭回归(BayesianRidge)、自动关联决策回归、高斯过程、核函数、及高斯回归、高斯过程分类
- 如何用计算机弹逆战6,逆战星光弹夹使用方法介绍 轻松玩转星光弹
- java课程设计图片浏览器_java课程设计图片浏览器
- 预言机、预言机网络、预测市场
- 唯有自己变得强大_真正的自立,唯是让自己变得更加强大
- 华为鸿蒙系统学习笔记3-方舟编译器介绍
- A.01.03-模块的输入—模拟量输入
- 几个学习git的地方
- soapui返回值类型都有哪些_小程序都有哪些类型,开发小程序效果如何
- 无线充电主控芯片方案
- SpringCloud Alibaba Nacos作为配置中心(三)----------yml格式配置文件
- jQuery锁定页面元素(表格列)
- python3怎么运行代码_python怎么运行代码
- android的otg功能,怎么打开手机OTG功能?
- 深圳市专利代理机构名单(截至2016年3月)
- USB设备无法识别也无法读取怎么办?
- 如何开通聚合商家收款码?
- 东南大学破格保研挂科_给挂科同学的建议
- 蒙特卡洛法求圆周率(python)
- 英威腾伺服驱动器故障代码_英威腾伺服电机常见问题及解决方法