洛谷P1736 创意吃鱼法 dp
正解:dp
解题报告:
早就想写dp的题目辣!我发现我的dp好差啊QAQ所以看到列表的小朋友写dp的题目就跟着他们的步伐做下题好辣QwQ
这题的话没有那——么难,大概说下趴QwQ
首先说下题意
前面一堆什么吃鱼之类的都是瞎扯淡,,,我我我我开始还以为只能站在边界我会说
然后简单来说这题就是要找一个最大子正方形使得它只有对角线有鱼
然后这题大概就是设三个数组,h[i][j]表示向左最多拓展多少个0 l[i][j]表示向上最多拓展多少个0 f[i][j]表示向左上最多拓展多少个1
转移大概就是这样子的:
f[i][j]=min(f[i-1][j-1],h[i][j-1],l[i-1][j])+1
很好理解趴还是?然后就大力转移即可,也不用初始化什么的,就很susi
哦还有就是注意一下它的对角线不一定是左上右下,,,我开始写题解的时候一直以为只能是左上右下的,,,
但其实差不多只要再做一遍就成辣!
over!
- # include <bits/stdc++.h>
- using namespace std;
- #define ll int
- #define rg register
- #define rp(i,x,y) for(rg ll i=x;i<=y;++i)
- #define my(i,x,y) for(rg ll i=x;i>=y;--i)
- +;
- ll h[N][N],l[N][N],f[N][N],as,n,m;
- inline ll read()
- {
- rg ll x=;rg ;rg char ch=getchar();
- '))ch=getchar();
- ,ch=getchar();
- )+(x<<)+(ch^'),ch=getchar();
- return y?x:-x;
- }
- inline ll mn(ll x,ll y,ll z){return min(min(x,y),z);}
- int main ()
- {
- n=read();m=read();
- rp(i,,n)
- rp(j,,m)
- {
- bool pl=read();
- ]+,l[i][j]=l[i-][j]+;
- ][j-],h[i][j-],l[i-][j])+,;
- }
- memset(h,,,sizeof(f));
- rp(i,,n)my(j,m,)]+;][j+],h[i][j+],l[i-][j])+,as=max(as,f[i][j]);
- printf("%d\n",as);
- ;
- }
代码在这儿!
做完之后upd一下这题还有一个小坑点要注意
就是,它很容易炸内存,,,
要通过两个途径优化一下不然会MLE
第一个是要开int不要开ll(,,,对我这种无脑开ll星人极不友好TT
第二个是读入pl之后我本来是给pl另开了一个数组,因为想着之后还要重做一次嘛,但实际上不需要,我们可以直接通过l或h得到pl是1还是0
(ps:这题还可以用枚举+剪枝过去,不想写了详见婷婷小朋友博客
洛谷P1736 创意吃鱼法 dp的更多相关文章
- 洛谷 P1736 创意吃鱼法 Label:dp || 前缀和
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
- 洛谷 P1736 创意吃鱼法(多维DP)
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
- 洛谷 P1736 创意吃鱼法
题目描述 题目链接:https://www.luogu.org/problemnew/show/P1736 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢( ...
- 洛谷P1736 创意吃鱼法
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
- P1736 创意吃鱼法 /// DP
题目大意: https://www.luogu.org/problemnew/show/P1736 题解 dplr[][] 当前点左边(副对角线时为右边)有多少个连续的0 dpup[][] 当前点上边 ...
- P1387 最大正方形&&P1736 创意吃鱼法
P1387 最大正方形 P1736 创意吃鱼法 两道类似的$DP$ 转移方程基本上类似于$f[i][j]=min(f[i-1][j-1],min(f[i][j-1],f[i-1][j]))$ 考虑构成 ...
- P1736 创意吃鱼法 图的DP
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
- P1736 创意吃鱼法[二维dp]
题目背景 感谢@throusea 贡献的两组数据 题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她 ...
- P1387 最大正方形 && P1736 创意吃鱼法(DP)
题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=100),接下来n行,每行m ...
随机推荐
- 小知识(class文件查看jdk版本,beyond,could not find setter)
最近几天工作当中遇到了一些问题,所以记录下来. 1.如何查看class文件的sdk版本 2.beyond compare比对文件 3.Could not find setter for native_ ...
- 【Java面试题】5 Integer的int 的种种比较?详细分析
如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null.但是如果面试官再问一下Integer i = 1; ...
- php多语言截取字符串函数
<?php header("Content-Type:text/html;charset=utf-8"); function msubstr($str, $start = 0 ...
- 浮点纹理 opengl
原文地址:http://wangqingyun84.blog.163.com/blog/static/790836172010323113604/ 因为 glsl部分 绑定fbo 看到要用浮点纹理,搜 ...
- informatica中的workflow连接远程数据库
如果是远程oracle这样写 名称随便起,方便自己记住,后面用户名密码你都知道,再加上数据库的地址:端口/SID就可以了. 如10.33.2.208:1521/torcl
- SQL Server 查看数据库在数据缓存(data cache)中占用的空间大小
use master go select * from sys.dm_os_buffer_descriptors go --查看数据库在数据缓存(data cache)中占用的空间大小 --由于每个数 ...
- 详解MathType引用公式编号功能
在论文创作期间,如果需要在文本中删除大量的公式,手动编号删除的工作量是比较大的,使用MathType引用公式编号功能就可以节约大量的时间,提供很大的方便.本教程将详解MathType引用公式编号功能. ...
- CWorkBooks、CWorkBook、CWorkSheets、CWorkSheet、CRange
我们使用VC++操作Excel,对于Excel编程来说肯定少不了要遇到六个最基本的类: CApplication.CWorkBook.CWorkBooks.CWorkSheet.CWorkSheets ...
- [kfaka] Apache Kafka:下一代分布式消息系统
简介 Apache Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和可复制的提交 ...
- 一、SDWebImage分析--库处理流程分析
二.SDWebImage分析--源码具体分析 这阵子看了SDWebImage的实现跟源代码.也看了下网上的一些总结. 这里我自己画了个流程图来辅助理解下SDWebImage这个库的实现流程.相信也是有 ...