poj3923:http://poj.org/problem?id=3923

题意:给出两个整数n、m表示屏幕的长宽。屏幕上有一些窗口,每个窗口都是矩形的,窗口的边框用同一个大写字母来表示,不同的窗口的大写字母必定不同。

由于窗口的重叠,有些窗口的有些部分被其他窗口覆盖。但是,肯定有一些窗口在最顶端,不被其他任何窗口覆盖。我们称这些窗口为“顶端窗口”。你的任务就是找出所有的顶端窗口。

题解:简单的模拟。结果我错了很多次啊。首先,没有考虑到边框的内部一定要是'.',然后是最坑就是每个窗口的高度和宽度都不能小于3,自己模拟能力还是很弱啊,要多打打。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
bool visit[],ans[];
char mp[][];
struct Node{
int x1,y1;
int x2,y2;
}num[];
int n,m;
int main(){
while(~scanf("%d%d",&n,&m)){
if(n==&&m==)break;
if(n<||m<)continue;
memset(visit,,sizeof(visit));
memset(num,,sizeof(num));
memset(mp,,sizeof(mp));
memset(ans,,sizeof(ans));
for(int i=;i<=;i++){
num[i].x1=num[i].y1=;
num[i].x2=num[i].y2=;
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++){
cin>>mp[i][j];
if(mp[i][j]!='.'){
num[mp[i][j]-'A'].x1=min(num[mp[i][j]-'A'].x1,i);
num[mp[i][j]-'A'].y1=min(num[mp[i][j]-'A'].y1,j);
num[mp[i][j]-'A'].x2=max(num[mp[i][j]-'A'].x2,i);
num[mp[i][j]-'A'].y2=max(num[mp[i][j]-'A'].y2,j);
visit[mp[i][j]-'A']=;
}
}
for(int i=;i<=;i++){
if(visit[i]){
int t1=num[i].x1;
int t2=num[i].y1;
int t3=num[i].x2;
int t4=num[i].y2;
bool flag=false;
for(int j=t2;j<=t4;j++){
if((mp[t1][j]!=('A'+i))||(mp[t3][j]!=('A'+i))){
flag=true;
break;
}
}
for(int j=t1;j<=t3;j++){
if(mp[j][t2]!=('A'+i)||mp[j][t4]!=('A'+i)){
flag=true;
break;
}
}
if(t3-t1<||t4-t2<)flag=true;
if(!flag)
ans[i]=;
}
}
for(int i=;i<=;i++){
if(visit[i]){
for(int k=num[i].x1+;k<num[i].x2;k++){
for(int j=num[i].y1+;j<num[i].y2;j++){
if(mp[k][j]!='.')
ans[i]=;
}
}
}
}
for(int i=;i<=;i++)
if(ans[i])
printf("%c",i+'A');
printf("\n");
}
}

Ugly Windows的更多相关文章

  1. POJ 3923 HDU 2487 Ugly Windows 简单计算

    Ugly Windows Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  2. HDU 2487 Ugly Windows(暴力)(2008 Asia Regional Beijing)

    Description Sheryl works for a software company in the country of Brada. Her job is to develop a Win ...

  3. HDU 2487 Ugly Windows

    递归求解,代码不太好看,是2013年7月写的 代码: #include<stdio.h> #include<iostream> #include<string.h> ...

  4. 【HDOJ】2487 Ugly Windows

    暴力解. #include <cstdio> #include <cstring> #define MAXN 105 char map[MAXN][MAXN]; ]; int ...

  5. POJ 3923 Ugly Windows(——考察思维缜密性的模拟题)

    题目链接: http://poj.org/problem?id=3923 题意描述: 输入一个n*m的屏幕 该屏幕内有至少一个对话框(每个对话框都有对应的字母表示) 判断并输出该屏幕内处于最表层的对话 ...

  6. windows下 cmd 界面的替代者 cmder 推荐!

    介绍 http://cmder.net/ Portable console emulator for Windows Cmder is a software package created out o ...

  7. HDUOJ----2487Ugly Windows

    Ugly Windows Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  8. 一起KVM环境下windows7虚拟机异常死机(BSOD)的问题解决

    先说一下环境: 一.硬件 8台服务器做的超融合架构,软件存储池, 每台服务器是96G内存,两颗Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz,32线程. 每台服务器是 ...

  9. HDU-2487

    Ugly Windows Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

随机推荐

  1. cocos2d-x创建精灵动画

    创建动画一般过程: 1.创建精灵框架缓存,并向其中添加相应的动画文件(plist),最后,通过动画集缓存生产动画 CCSpriteFrameCache *cache = CCSpriteFrameCa ...

  2. HDU--5280(dp或枚举)

    官方题解: 这个题有非常多O(n2)的算法.这里说一种:枚举每个区间,在枚举区间的同一时候维护区间内的最小值和区间和,将最小值与P的大小进行比較,贪心地取最大值就可以.注意若枚举到的区间是整个数组,则 ...

  3. QT QObject::connect函数的学习

      从Qobject(QObject.h)源码中可以看到QObject::connect的定义是这样的: static bool connect(const QObject *sender, cons ...

  4. TCP/IP协议原理与应用笔记01:OSI网络参考模型

    1.OSI参考模型 第7层应用层:直接对应用程序提供服务,应用程序可以变化,但要包括电子消息传输   第6层表示层:格式化数据,以便为应用程序提供通用接口.这可以包括加密服务   第5层会话层:在两个 ...

  5. oracle在linux配置信息

    这两天在linux中给已有的oracle添加新实例,其中涉及数据库服务.监听配置,oracle服务是否正常.监听是否成功等操作,特此记录存档,以备后用. oracle服务启动操作命令 1.查看orac ...

  6. Web的鼠标拖动效果

    以前写过一个拖动效果的Demo,拖拽元素新位置的计算是放在拖拽元素的mousemove事件中进行的.计算效率差,而且效果不好.所以一直有想怎样才能做出jquery-ui那种顺滑的拖拽效果. 其实顺滑的 ...

  7. date和long的相互转换

    import java.text.SimpleDateFormat; import java.util.Date; public class T { public static void main(S ...

  8. 使用PHP实现蜘蛛访问日志统计

    $useragent = addslashes(strtolower($_SERVER['HTTP_USER_AGENT'])); if (strpos($useragent, 'googlebot' ...

  9. 数据的动态合并和导出至EXCEL

    最近一段时间都在处理数据的动态合并和导出EXCEL的问题,写个demo记录下,希望和我碰到同样问题的博友可以顺利解决:后面会提供demo下载链接. (VS2012,ASP.NET) 一.主要解决以下问 ...

  10. sql - 以半月,每月 分组

    按半月:完整代码: SELECT siteNumber [站点], CONVERT(VARCHAR(7),day,120)+'-'+ case when day(day) between 1 and ...