当前位置: 首页 > 编程日记 > 正文

Uva 10074【递推dp】

UVa 10074

题意:求01矩阵的最大子0矩阵。

http://www.csie.ntnu.edu.tw/~u91029/MaximumSubarray.html#2

这里说的很清楚。先求Largest Empty Interval,枚举每个点为矩形的右下角。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int MAXN = 107;
 7 int Map[MAXN][MAXN], width[MAXN][MAXN];
 8 int row, col;
 9 
10 int main()
11 {
12     while (cin>>row>>col&&!(row==0&&col==0))
13     {
14         int ans = 0;
15         for(int i=1;i<=row;i++)
16             for (int j = 1; j <= col; j++) {
17                 cin >> Map[i][j];
18                 if (Map[i][j]) width[i][j] = 0;
19                 else width[i][j] = width[i][j - 1] + 1;
20             }
21         for (int i = 1; i <= row; i++)
22         {
23             for (int j = 1; j <= col; j++) {
24                 int w = 1e9;
25                 for (int h = 1; i - h + 1 > 0; h++) {
26                     if (Map[i][j]) break;
27                     w = min(w, width[i - h + 1][j]);
28                     ans = max(ans, w*h);
29                 }
30             }
31         }
32         cout << ans << endl;
33     }
34     return 0;
35 }

按照下一个更高效的算法写,不知道为什么会WA,可能是哪里有问题。。。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int MAXN = 107;
 7 int Map[MAXN][MAXN];
 8 int wl[MAXN], wr[MAXN];
 9 int h[MAXN], l[MAXN], r[MAXN];
10 int row, col;
11 
12 int main()
13 {
14     while (scanf("%d%d", &row, &col) == 2, !(row == 0 && col == 0))
15     {
16         int ans = 0;
17         for (int i = 1; i <= row; i++)
18             for (int j = 1; j <= col; j++)
19                 scanf("%d", &Map[i][j]);
20         for (int i = 1; i <= row; i++)
21         {
22             for (int j = 1; j <= col; j++)
23                 if (Map[i][j]) wl[j] = 0;
24             else wl[j] = wl[j - 1] + 1;
25             
26             for (int j = col; j >= 1; j--)
27                 if (Map[i][j]) wr[j] = 0;
28             else wr[j] = wr[j + 1] + 1;
29     
30             for (int j = 1; j <= row; j++)
31                 if (Map[i][j]) h[j] = 0;
32             else h[j] = h[j] + 1;
33             
34             for (int j = 1; j <= col; j++)
35                 if (r[j] == 0) r[j] = wr[j];
36             else r[j] = min(wr[j], r[j]);
37             
38             for (int j = 1; j <= col; j++)
39                 if (l[j] == 0) l[j] = wl[j];
40             else l[j] = min(wl[j], l[j]);
41             
42             for (int j = 1; j <= col; j++)
43                         ans = max(ans, (l[j] + r[j] - 1)*h[j]);
44         }
45         printf("%d\n", ans);
46     }
47     return 0;
48 }
WA1

最高效的按照栈那种方式写也是WA。。。。。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stack>
 6 using namespace std;
 7 const int MAXN = 107;
 8 int a[MAXN][MAXN], h[MAXN][MAXN];
 9 int col, row;
10 
11 int main()
12 {
13     while (cin >> row >> col)
14     {
15         if (!col && !row) break;
16         for (int i = 1; i <= row; i++)
17             for (int j = 1; j <= col; j++)
18                 cin >> a[i][j];
19         memset(h, 0, sizeof(h));
20         for (int i = 1; i <= row; i++)
21             for (int j = 1; j <= col; j++)
22                 if (a[i][j]) h[i][j] = 0;
23                 else h[i][j] = h[i - 1][j] + 1;
24 
25                 stack<int> st;
26                 int area;
27                 int mx = 0;
28                 for (int i = 1; i <= row; i++)
29                 {
30                     int j;
31                     for (j = 1; j <= col;) {
32                         if (st.empty() || h[i][st.top()] <= h[i][j])
33                             st.push(j++);
34                         else {
35                             int top = st.top();
36                             st.pop();
37                             if (st.empty())
38                                 area = h[i][top] * j;
39                             else
40                                 area = h[i][top] * (j - st.top() - 1);
41                             mx = max(mx, area);
42                         }
43                     }
44                     while (!st.empty())
45                     {
46                         int top = st.top();
47                         st.pop();
48                         if (st.empty()) area = h[i][top] * j;
49                         else
50                             area = h[i][top] * (j - st.top() - 1);
51                         mx = max(mx, area);
52                     }
53                 }
54                 cout << mx << endl;
55     }
56     return 0;
57 }
WA2

转载于:https://www.cnblogs.com/zxhyxiao/p/7403196.html

相关文章:

金融时报:谷歌撤离中国有99.9%的可能性

据国外媒体报道&#xff0c;英国《金融时报》周六发表文章称&#xff0c;谷歌与中国政府就监管问题的谈判显然陷入僵局&#xff0c;而这家世界最大的搜索引擎关闭中国业务现在有99.9%的可能性。《金融时报》称&#xff0c;谷歌已经制定了关闭中国搜索引擎的详细计划。该报援引一…

技术图文:匿名方法是怎样演变为Lambda表达试的?

背景 “Lambda 表达式”&#xff08;lambda expression&#xff09;是一个匿名函数&#xff0c;Lambda 表达式基于数学中的 λ演算得名&#xff0c;直接对应于其中的 lambda 抽象&#xff08;lambda abstraction&#xff09;&#xff0c;是一个匿名函数&#xff0c;即没有函数…

python和c++的相互调用教程

日常工作中会遇到需要python与cpp代码之间的相互调用&#xff0c;工作的应用复杂&#xff0c;都是取决于代码的多少&#xff0c;但是总的方法不变&#xff0c;这里用两个简单例子说明下&#xff0c;有兴趣的筒子可以探讨下~~ 我的测试环境&#xff1a;ubuntu1604&#xff0c;py…

技术图文:如何通过 LINQ 查找集合中的重复数据?

背景 在前几天介绍的 如何利用C#实现Huffman编码&#xff1f; 的图文中有以下代码。 private List<HuffmanTreeNode> CreateInitForest(string str) {if (string.IsNullOrEmpty(str))throw new ArgumentNullException();List<HuffmanTreeNode> result new List&…

mysql的基本知识

安装&#xff1a;http://www.cnblogs.com/sshoub/p/4321640.html 导库 http://www.cnblogs.com/yuwensong/p/3955834.html 报错&#xff1a;Error was: No module named PIL pip install image转载于:https://www.cnblogs.com/baldermurphy/p/7403778.html

msys下产生dll的导入库

有些时候在只有一个dll的情况下&#xff0c;如果需要隐式链接的话&#xff0c;就需要为该dll产生一个导入库.注意导入库是不能跨编译器使用的&#xff0c;在mingw中导入库需要以.a结尾,而vs则以.lib 以下的方法是在Msys产生mingw及vs 的导入库 , 打开MSys工具 首先生成dll库的d…

零基础小白如何学习好UI设计

智能时代的来临&#xff0c;很多企业都越来越注重用户体验这一块&#xff0c;想要有一个吸引用户的好页面&#xff0c;UI设计师岗位不可或缺&#xff0c;如今越来越多的人想要学习UI设计技术&#xff0c;那么对于零基础小白如何学习好UI设计呢? 零基础小白如何学习好UI设计? …

技术图文:如何利用BigOne的API制作自动化交易系统 -- 获取账户资产

背景 前几天我们介绍了如何使用 BigONE Developer API V2 来获取身份令牌的方法「如何利用BigOne的API制作自动化交易系统 – 身份验证」。一旦获取了身份令牌&#xff0c;我们就可以在网络请求的 header 中加入令牌来获取自己的账户数据&#xff0c;创建买入、卖出订单&#…

『网站升级』PHPWind8.0至8.3升级过程及问题种种回顾录

上星期的PHPWind杭州峰会之后&#xff0c;PHPWind发布了8.3版。紧接着淘连接&#xff0c;淘满意&#xff0c;团购PHPWind的一系统ARP应用开始进入我们公司技术苦力的耳朵里&#xff08;也就是偶&#xff09;&#xff0c;偶知道有大事要发生了。于是乎。领导悠然降至&#xff0c…

新浪 抓取详情页

转载于:https://www.cnblogs.com/tian-sun/p/7404493.html

零基础如何学习软件测试

很多人想学软件测试是因为软件测试是进入到IT行业里比较快的一门技术&#xff0c;软件测试的门槛比较低&#xff0c;初学者和零基础小白学起来都是比较容易的&#xff0c;下面小编就详细的给大家介绍一下具体零基础如何学习软件测试? 零基础如何学习软件测试?对于初级测试而言…

VPS使用初体验

很早就想建个人网站&#xff0c;但是出于各种限制&#xff0c;一直没有实施。前几天开通了网银&#xff0c;便再次萌发了建站的想法。。。 购买一个了enom的域名&#xff0c;然后寻找比较好的虚拟主机&#xff0c;发现ubuntuchina上有个卖vps的&#xff0c;价格还行&#xff0c…

LeetCode实战:相同的树

题目英文 Given two binary trees, write a function to check if they are the same or not. Two binary trees are considered the same if they are structurally identical and the nodes have the same value. Example 1: Input: 1 1/ \ / \2 3 …

mysql数据库常用命令

登录&#xff1a; mysql -h 服务器地址 -u 登录名 -P 端口 -p 密码 &#xff08;登录时最好先不输入密码&#xff0c;等下一条提示出来之后再输&#xff0c;这样可以在界面中隐藏密码&#xff09; 退出&#xff1a; quit 或者 exit 注意&#xff1a;登录数据库系统后&#xff0…

Java入门学习注意事项有哪些?

想要学好java技术&#xff0c;做好学习规划路线和注意事项是非常重要的&#xff0c;尤其是零基础学员&#xff0c;Java涉及到的知识点非常多&#xff0c;我们需要制定合理的Java学习路线图&#xff0c;这样会事半功倍&#xff0c;下面小编和大家总结一下Java入门学习注意事项有…

在Hibernate中处理批量更新和批量删除

批量更新是指在一个事务中更新大批量数据&#xff0c;批量删除是指在一个事务中删除大批量数据。以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段&#xff1a; 如果CUSTOMERS表中有1万条年龄大于零的记录&#xff0c;那么Session的find()方法…

LeetCode实战:对称二叉树

题目英文 Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For example, this binary tree [1,2,2,3,4,4,3] is symmetric: 1/ \2 2/ \ / \ 3 4 4 3But the following [1,2,2,null,3,null,3] is not: 1/ \2 2\ \3 …

flannel 概述 - 每天5分钟玩转 Docker 容器技术(58)

2019独角兽企业重金招聘Python工程师标准>>> flannel 是 CoreOS 开发的容器网络解决方案。flannel 为每个 host 分配一个 subnet&#xff0c;容器从此 subnet 中分配 IP&#xff0c;这些 IP 可以在 host 间路由&#xff0c;容器间无需 NAT 和 port mapping 就可以跨…

Python如何实现穷举搜索?

穷举搜索就是在整个搜索空间范围内尝试每一种可能性&#xff0c;直到找到目标值或者整个搜索空间都找完也没有找到目标值。最常见的穷举搜索就是线性搜索&#xff0c;即按照顺序简单检查所有不同的可能性。 例如&#xff1a;2个警察追逐强盗到了一个废弃旅馆的二楼走廊&#xf…

技术图文:如何利用BigOne的API制作自动化交易系统 -- 订单系统

背景 前面几天&#xff0c;我们一起封装了 BigONE 提供的“身份验证”与“资产账户”部分的 API。 如何利用BigOne的API制作自动化交易系统 – 身份验证如何利用BigOne的API制作自动化交易系统 – 获取账户资产 现在&#xff0c;离搭建咱们的自动化交易系统更近一步了。 本…

[解决]eclipse中android自动补全/提示卡机或假死

这是Eclipse3.6版本的特有问题&#xff0c;想彻底解决此问题的话&#xff0c;还是建议换为3.5/3.4&#xff1b; 在保持版本不变的前提下&#xff0c;可以按如下方法优化下&#xff1a; 解决办法&#xff1a;1. 找到你的JDK安装目录下的src.zip文件&#xff1b;2. 打开eclipse: …

17.SpringMVC核心技术-拦截器

SpringMVC 中的 Interceptor 拦截器是非常重要和相当有用的&#xff0c;它的主要作用是拦截指定 的用户请求&#xff0c; 并进行相应的预处理与后处理。其拦截的时间点在“处理器映射器根据用户提 交的请求映射出了所要执行的处理器类&#xff0c; 并且也找到了要执行该处理器类…

Python培训讲解二叉树的三种深度

python代码实现了二叉树&#xff0c;这次将会实现二叉树的几种遍历方法&#xff0c;来更好的解析二叉树的结构特点。分别是一种广度遍历&#xff0c;和三种深度遍历方法&#xff1a;先序遍历&#xff0c;中序遍历&#xff0c;后序遍历。下面是代码实现&#xff1a; 1、先序遍历…

Ajax弹出漂亮可拖动的提示层(窗)效果

<html><head><meta http-equiv"Content-Type" content"text/html; charsetgb2312" /><title>Ajax提示框</title><style type"text/css">a{ color:#000; font-size:12px;text-decoration:none}a:hover{ colo…

技术图文:如何解决 DAO 抛出的 80040154 错误?

背景 前几天&#xff0c;咱们一起解决了向 Access 数据库插入大量数据效率底下的问题。通过实验表明&#xff1a;利用 DAO 的方式可以极大的提升数据插入速度。 如何利用 C# 向 Access 数据库插入大量数据&#xff1f; 可是&#xff0c;给电力局升级了软件产品之后&#xff…

路由器配置实践 教你如何在Linux中三台主机两个网段互相通信

大家好我是你们的齐天大圣又到了齐天大圣给大家讲解的时间了今天我带你们做一个 大大项目 你们信不信如果把你不小心打开这个文档 希望你能看完 这个博文花费了我两天的时间所以请尊重我的劳动 假装看完好吗 齐天大圣在此谢过各位看官首先欢迎大家观看操作步骤我们正式开始题目…

Web前端学习有哪些技巧?

想要学好web前端技术&#xff0c;在学习过程中找到合适的方法和技巧&#xff0c;那么在实际学习过程中会更加的容易和快速掌握知识重点&#xff0c;尤其是对于初学者尤为关键&#xff0c;下面小编就为大家详细的介绍一下Web前端学习有哪些技巧?希望能够对学习有所帮助。 Web前…

技术图文:如何利用C# + Echarts 绘制 Bar Simple?

背景 Echarts 是百度推出的一个使用 JavaScript 实现的开源可视化库。 该库提供了常规的折线图、柱状图、散点图、饼图、K线图&#xff0c;用于统计的盒形图&#xff0c;用于地理数据可视化的地图、热力图、线图&#xff0c;用于关系数据可视化的关系图、treemap、旭日图&…

Moss/Sharepoint 一些很重要的API备忘

1.根据用户名获取用户 SPUser user web.EnsureUser((new SPFieldLookupValue(item["Mitarbeiter"].ToString())).LookupValue); 2.根据guid获取Feature对象 SPFeature listDisplaySettingFeature site.Features[newGuid("88E9E47A-BA92-47ab-A253-8AA472CCC76B…

vue从创建到完整的饿了么(5)v-for,v-bind与计算属性

说明 1.上一章--Home.vue及vue-resource使用2.cangdu大神的项目源码地址--Github地址3.接口地址--Github地址4.UI框架用的是--Mint UI5.下一章--登录注册页面及密码的暗明文转换 开始 1.先看看Home.vue代码 <template><div><mt-header fixed><span slot&q…