uva12265 抓关键 矩形利用对角两点
来源:互联网 发布:淘宝菜鸟驿站加盟 编辑:程序博客网 时间:2024/05/19 01:13
- 题目要抓住关键,这道题的关键是通过矩形的左上角定位矩形。
- 保存可能的最优解,并进行更新的思想。
- 一步一步想,要追求逻辑层次,画出来,不要贪快。例如:行往下遍历,列往右遍历,通过递增计算出来高度,通过一个数组保存可能的解并更新。
- 利用数组下标模拟栈。
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23887
#include <cstdio>#include <cstring>using namespace std;const int maxn = 1000 + 10;char s[maxn][maxn];int height[maxn], ans[maxn << 1];struct Rect//表示左上角的当前列和高度{ int c, h; //构造函数,前面的是形参,冒号后面的语句是给数据初始化为形参。默认一个值是一个好的习惯,但实际意义不大。 Rect(int cc = 1, int hh = 1):c(cc), h(hh) {}}rect[maxn];int n, m;int main(){ int T; scanf("%d", &T); while(T--) { scanf("%d%d", &n, &m); for(int i = 0; i < n; i++) scanf("%s", s[i]); memset(height, 0, sizeof(height)); memset(ans, 0, sizeof(ans)); for(int i = 0; i < n; i++)//先行后列遍历 { int top = -1;//舒适化一个标识 for(int j = 0; j < m; j++) { if(s[i][j] == '#') { top = -1;//通过操作下标来模拟栈,效率高。 height[j] = 0; } else { height[j]++;//当前列的高度递推得到 Rect r(j, height[j]); if(top < 0) rect[++top] = r; //空栈直接赋值 else { while(top >= 0 && rect[top].h >= r.h) r.c = rect[top--].c; //栈中的h应等于最左边碰到墙位置的c,扁平型 if(top < 0 || r.h - r.c > rect[top].h - rect[top].c) rect[++top] = r;//如果有最优解,那么加入栈 } r = rect[top]; ans[r.h + j - r.c + 1]++; } } } for(int i = 2; i <= m + n; i++)//将结果直接保存在数组中,对应的下标进行计数。 if(ans[i]) printf("%d x %d\n", ans[i], i * 2); } return 0;}
1 0
- uva12265 抓关键 矩形利用对角两点
- uva12265(dp)
- 听浪曦视频抓关键
- 期中考试的题目-已知矩形对角求面积
- 有效解决问题得抓关键
- uva12265 selling land
- 利用css画圆角矩形
- 利用fiddler抓包
- 5.4 编写一个程序,求以下矩形两条对角线上的元素之和:
- 求从一个矩形的一个点到其对角点有多少种走法
- 抓包软件关键代码段实现
- 【UVa12265】Selling Land 贩卖土地
- 利用opencv检测出矩形
- 利用shader绘制矩形网格
- 【绘制矩形】已知二维平面矩形的对角线两点坐标,如何确定四个点的坐标
- Android利用tcpdump抓包
- Android利用tcpdump抓包
- Android利用tcpdump抓包
- HTML5知识库精选:优秀案例、酷炫特效、重难点技术解答
- 修复DUILIB ListEx多个时选择框乱选的BUG
- tomcat Could not load the Tomcat server异常,mybatis associated 异常,数据库异常Illegal mix of collations
- 使用GPUImage实现视频滤镜
- $('#checkbox').attr('checked')的变化
- uva12265 抓关键 矩形利用对角两点
- Android Studio在命令行运行Gradle
- java 掩码 iP与位数的转化
- 在中断中软件模拟PWN
- node服务器中打开html文件的两种方法
- HDU 1710 Binary Tree Traversals(二叉树)
- 最短路径学习总结
- Android线程学习笔记
- usb驱动开发