洛谷 P1736 创意吃鱼法
2017-10-26 15:40
218 查看
一个简单的dp。
最长线是之前的最长的和前面零的个数的最小值
不过一开始我的min忘写了,编译器竟然不报错。。
尴尬了。。。
最长线是之前的最长的和前面零的个数的最小值
不过一开始我的min忘写了,编译器竟然不报错。。
尴尬了。。。
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int ans,m,n,f[2509][2509],dp[2509][2509],a[2509][2509],h[2509][2509],s[2509][2509]; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ scanf("%d",&a[i][j]); if(!a[i][j]) { h[i][j]=h[i][j-1]+(a[i][j]^1); s[i][j]=s[i-1][j]+(a[i][j]^1); } if(a[i][j])f[i][j]=(min(f[i-1][j-1],min(s[i-1][j],h[i][j-1]))+1)*a[i][j]; } memset(h,0,sizeof h); memset(s,0,sizeof s); for(int i=1;i<=n;i++) for(int j=m;j>=1;j--) { if(!a[i][j]) { h[i][j]=h[i][j+1]+(a[i][j]^1); s[i][j]=s[i-1][j]+(a[i][j]^1); } dp[i][j]=(min(dp[i-1][j+1],min(s[i-1][j],h[i][j+1]))+1)*a[i][j]; } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) ans=max(ans,max(dp[i][j],f[i][j])); printf("%d",ans); }
相关文章推荐
- 洛谷 P1736 创意吃鱼法
- 洛谷P1736 创意吃鱼法
- 洛谷 P1736 创意吃鱼法
- |洛谷|动态规划|P1736 创意吃鱼法
- 洛谷 P1736 创意吃鱼法
- 洛谷 P1736 创意吃鱼法
- 洛谷P1736 创意吃鱼法
- 洛谷 P1736 创意吃鱼法
- P1736 创意吃鱼法
- P1736 创意吃鱼法
- [洛谷1736] 创意吃鱼法
- P1736 创意吃鱼法
- 洛谷 2158 数论 打表 欧拉函数
- [洛谷P2898][USACO08JAN]haybale猜测Haybale Guessing
- 洛谷 1972 莫队
- 2012NOIP普级组第三题--摆花(参考洛谷题解)
- 洛谷 1373 dp 小a和uim之大逃离 良心题解
- [NOIP2017模拟][洛谷3938]斐波那契
- 洛谷 1262 间谍网络 Tarjan 图论
- 洛谷 [P1265] 公路修建