2016"京胜杯"- YZK的大别墅
来源:互联网 发布:linux启动5938端口 编辑:程序博客网 时间:2024/04/27 19:53
2016”京胜杯”- YZK的大别墅
题目描述
土豪YZK最近得到了面积为n*m的一大块土地(高兴ING^_^),他想在这块土地上建造一所房别墅,但是这个别墅必须是方形的。 可是,这块土地并非十全十美,上面有很多不平坦的地方(也可以叫瑕疵)。这些瑕疵十分恶心,以至于根本不能在上面盖一砖一瓦。但是却可以挖成人工观赏湖,或者挖成游泳池。 YZK希望找到一块最大的方形土地来盖别墅,既然是别墅,肯定要有些景观,但是YZK最多只愿意造k个人工湖或游泳池,现在请你来帮助YZK找到面积最大的满足条件的土地。 给定一个01矩阵,0表示土地可用,1表示土地不可用,输出符合YZK要求的最大土地的面积。
输入
第一行一个整数T,表示有T组测试数据。 对于每组测试数据,第一行包含三个整数n,m,k,表示矩阵的行数和列数,以及最多的人工湖或游泳池数量。 之后n行,每行m个整数,表示矩阵。 T < 25 0 < n,m < 100
输出
对于每组数据输出一行,包含一个整数,表示最大面积。
样例输入
2
2 2 0
1 0
0 1
3 3 1
1 0 0
0 0 1
0 0 1
样例输出
1
6
思路
-此题主要是采取动态规划求解,用数组dp记录信息,dp[i][j]代表第j列从第一行的第i行所包含1的个数。
-然后将二维形式转化为一维形式求解。
#include <iostream>#include <cstring>#include <fstream>#include <cstdio>using namespace std;int dp[105][105];int main() { int t; cin >> t; while(t --) { memset(dp, 0, sizeof(dp)); int n, m, k; cin >> n >> m >> k; for(int i = 1; i <= n; i ++) { for(int j = 1; j <= m; j ++) { int temp; cin >> temp; dp[i][j] = temp + dp[i-1][j]; } } int _max = 0; for(int i = 1; i <= n; i ++){ for(int j = i; j <= n; j ++){ int temp = 0; int start = 0; //起始列的前一列 int span = 0; //横向跨度 for(int l = 1; l <= m; l ++){ //当为遍历的列数小于横向跨度时结束 if(span > m - start){ break; } //记录当前子矩阵中1的个数 temp += dp[j][l] - dp[i-1][l]; int a = (j - i + 1) * (l - start); //当前子矩阵的面积 if(temp > k){ //当前子矩阵中1的个数大于k时起始列右移一位 temp -= (dp[j][start+1]-dp[i-1][start+1]); start ++; } else if(temp <= k && a > _max){ span = l - start;//更新横向跨度 _max = a; } } } } cout << _max << endl; } return 0;}
1 1
- 2016"京胜杯"- YZK的大别墅
- 安徽省2016“京胜杯”程序设计大赛_J_YZK的大别墅
- 别墅的空间设计
- 神奇的别墅
- 教主的别墅(villa)
- 灵动的别墅室内装修
- 别针换别墅:童话的破灭
- 别墅装修设计必须注意的误区
- 木屋造价与木屋别墅的优势
- 把一栋15年的轻钢别墅拆开,别墅内部让人震惊
- 灵动的别墅空间 抒发朴实的自然之美
- 别墅装修设计_简洁风的别墅设计特性
- 别墅装修设计_不同季节的装修特点
- 家用电梯或别墅电梯符合的条件及标准
- 掌握双拼别墅设计技巧 设计适合自己的别墅
- 别墅室内设计的简欧风格具体表现在哪些特点
- 轻钢别墅和传统混砖房屋的区别
- 轻钢别墅与旅游景区的完美结合
- 01_eclipse安装步骤
- Eclipse搭建Strust2框架
- 读入一系列整数,统计出正整数个数及负整数个数,读入0就结束
- 经验分享:CSS浮动(float,clear)通俗讲解
- 可重入锁
- 2016"京胜杯"- YZK的大别墅
- ffmpeg(5):SDL相关学习
- RaspberryPi 扫描周边wifi
- 欢迎使用CSDN-markdown编辑器
- 44. 将样式表放在顶部(5)
- java编程思想读书笔记 第十二章 通过异常处理错误(上)
- 时间格式--java中的时间格式问题
- JS字符串按逗号和回车分隔
- 手动实现 KVO