原图找最大的房间及房间数很容易。然后从左下到右上找拆的位置。拆掉再bfs一次找面积。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <cstring>
#include <map>
#include <queue>
#include <set>
#include <cassert>
#include <stack>
#define mkp make_pair
using namespace std;
const double EPS=1e-;
typedef long long lon;
const lon SZ=,INF=0x7FFFFFFF;
int n,m,arr[SZ][SZ],dx[]={,-,,},dy[]={-,,,};
bool vst[SZ][SZ];
struct nd{
int x,y;
nd(int a,int b):x(a),y(b){}
}; void init()
{
cin>>m>>n;
for(int i=;i<=n;++i)
{
for(int j=;j<=m;++j)cin>>arr[i][j];
}
} int bfs(int bgx,int bgy)
{
int res=;
queue<nd> q;
vst[bgx][bgy]=;
q.push(nd(bgx,bgy));
for(;!q.empty();)
{
nd frt=q.front();
q.pop();
for(int i=;i<;++i)
{
int nx=frt.x+dx[i],ny=frt.y+dy[i];
if(!(arr[frt.x][frt.y]&(<<i))&&nx>=&&nx<=n&&ny>=&&ny<=m&&!vst[nx][ny])
{
vst[nx][ny]=;
q.push(nd(nx,ny));
++res;
}
}
}
return res;
} void work(int &block,int &maxb)
{
block=;
maxb=;
for(int i=;i<=n;++i)
{
for(int j=;j<=m;++j)
{
if(!vst[i][j])
{
maxb=max(maxb,bfs(i,j));
++block;
}
}
}
} void work2(int &maxv,int &maxx,int &maxy,char &maxd)
{
maxv=;
for(int j=;j<=m;++j)
{
for(int i=n;i>=;--i)
{
if(arr[i][j]&)
{
memset(vst,,sizeof(vst));
arr[i][j]-=;
int cur=bfs(i,j);
if(cur>maxv)
{
maxv=cur;
maxx=i,maxy=j;
maxd='N';
}
arr[i][j]+=;
}
}
for(int i=n;i>=;--i)
{
if(arr[i][j]&)
{
memset(vst,,sizeof(vst));
arr[i][j]-=;
int cur=bfs(i,j);
if(cur>maxv)
{
maxv=cur;
maxx=i,maxy=j;
maxd='E';
}
arr[i][j]+=;
}
}
}
} int main()
{
std::ios::sync_with_stdio();
//freopen("d:\\1.txt","r",stdin);
lon casenum;
//cin>>casenum;
//for(lon time=1;time<=casenum;++time)
{
init();
int block,maxb;
work(block,maxb);
cout<<block<<endl;
cout<<maxb<<endl;
int maxv,maxx,maxy;
char maxd;
work2(maxv,maxx,maxy,maxd);
cout<<maxv<<endl;
cout<<maxx<<" "<<maxy<<" "<<maxd<<endl;
}
return ;
}

p1457 The Castle的更多相关文章

  1. 洛谷P1457 城堡 The Castle

    P1457 城堡 The Castle 137通过 279提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 我们憨厚的USACO ...

  2. 洛谷 P1457 城堡 The Castle 解题报告

    P1457 城堡 The Castle 题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物:一张"幸运爱尔兰" ...

  3. 洛谷 P1457 城堡 The Castle

    P1457 城堡 The Castle 题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物:一张“幸运爱尔兰”(一种彩票).结果这 ...

  4. P1457 城堡 The Castle

    轻度中毒 原题 :The Castle 以下为题解部分:明明辣么简单的一道题,硬是搞了1.5h,WTF?以下列出本题的一些要点. 搜索(DFS)嘛,染色嘛,统计大小嘛,很容易想,也很更易处理. 接下来 ...

  5. 洛谷—— P1457 城堡 The Castle

    https://www.luogu.org/problem/show?pid=1457 题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特 ...

  6. 题解 洛谷P1457 【城堡 The Castle】

    这道题,看似很烦,无从下手,但其实只要用位运算和联通快就能水过了呀. 首先,输入:似乎大意是把一个数拆成二进数的相加,分别表示\((i,j)\)东南西北是否有墙.\(1\)表示西,\(2\)表示北,\ ...

  7. 题解 P1457 【城堡 The Castle】

    来讨论区大摇大摆地逛了一圈后,我发现竟然大家的代码 都很长 然而代码真的要写那么长吗 首先,来分析问题,1,2,4,8,这些数显然是有特点的,也许你已经想到了没错,它们都是2的次方数. 1是2的0次方 ...

  8. P1457 城堡 The Castle 位运算+BFS+思维(难题,好题)

    题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物:一张"幸运爱尔兰"(一种彩票).结果这张彩票让他获得了这次 ...

  9. Castle Core 4.0.0 alpha001发布

    时隔一年多以后Castle 项目又开始活跃,最近刚发布了Castle Core 4.0.0 的alpha版本, https://github.com/castleproject/Core/releas ...

随机推荐

  1. linux --- 2.常用命令 , python3, django安装

    一.常用命令 1.常识命令 ① w      显示终端连接数 ②pwd    我在哪 ③whoami      我是谁 ④which 命令        找到命令的绝对路径 2.linux 命令行的组 ...

  2. spring配置jax-ws

    在spring配置文件中新建bean(或者是在配置文件中添加bean),在该bean中添加指定的访问地址. @Bean public static SimpleJaxWsServiceExporter ...

  3. Hakase and Nano 【思维博弈】

    Hakase and Nano 时间限制: 1 Sec  内存限制: 128 MB 提交: 400  解决: 104 [提交] [状态] [命题人:admin] 题目描述 Hakase and Nan ...

  4. POJ 1191 棋盘分割(区间DP)题解

    题意:中文题面 思路:不知道直接暴力枚举所有情况行不行... 我们可以把答案转化为 所以答案就是求xi2的最小值,那么我们可以直接用区间DP来写.设dp[x1][y1][x2][y2][k]为x1 y ...

  5. win32 汇编学习(2):消息框

    这一次,我们将用汇编语言写一个 Windows 程序,程序运行时将弹出一个消息框并显示"你好,我的第一个Win32汇编程序". 理论知识 Windows 为编写应用程序提供了大量的 ...

  6. (zhuan) Recurrent Neural Network

    Recurrent Neural Network 2016年07月01日  Deep learning  Deep learning 字数:24235   this blog from: http:/ ...

  7. 深度学习 目标检测算法 SSD 论文简介

    深度学习 目标检测算法 SSD 论文简介 一.论文简介: ECCV-2016 Paper:https://arxiv.org/pdf/1512.02325v5.pdf  Slides:http://w ...

  8. (转载)C#控件缩写规范

    标准控件缩写规范 类 型 前 缀 示 例 Adrotator adrt adrtTopAd BulletedList blst blstCity Button btn btnSubmit Calend ...

  9. 理解 Redis(3) - 字符串值

    正如前面所讲的, redis 的数据结构就是一系列的键值对键 -> printable ASCII (可打印的 ASCII 码, 最大值是 512MB)值 -> Primitives (基 ...

  10. Matlab中的基本数据类型介绍

    Matlab中支持的数据类型包括: 逻辑(logical)字符(char)数值(numeric)元胞数组(cell)结构体(structure)表格(table)函数句柄(function handl ...