题目大意:给你一个城堡让你求有多少房间,最大房间有多大,敲掉一堵墙后最大的房间有多大,敲掉那座墙

思路:比较恶心的bfs题,反正就是bfs使劲敲

/*{
ID:a4298442
PROB:castle
LANG:C++
}
*/
#include<iostream>
#include<cstdio>
#include<fstream>
#include<queue>
#include<algorithm>
#define pii pair<int,int>
using namespace std;
ifstream fin("castle.in");
ofstream fout("castle.out");
const int dx[]={,,-,,};
const int dy[]={,-,,,};
int n,m,map[][],a[][],large[];
int check(int x,int y,int n,int m)
{
if(<=x && x<=n && <=y && y<=m)return ;
return ;
}
int bfs(int x,int y,int col)
{
int ret=;
queue<pii >q;
q.push(make_pair(x,y));
map[x][y]=col;
//cout<< x<< " "<<y<<" "<<col<<endl;
while(!q.empty())
{
pii u=q.front();
x=u.first;y=u.second;
q.pop();
for(int i=;i<=;i++)
{
int temp=a[x][y]&(<<(i-));
if(temp!=)continue;
int xx=x+dx[i],yy=y+dy[i];
if(!check(xx,yy,n,m))continue;
if(map[xx][yy]!=)continue;
map[xx][yy]=col;
ret++;
q.push(make_pair(xx,yy));
//cout<<xx<<" "<<yy<<" "<<col<<endl;
}
}
return ret;
}
int main()
{
//scanf("%d%d",&m,&n);
fin>>m>>n;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
//scanf("%d",&a[i][j]);
fin>>a[i][j];
}
}
int col=,ans=;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(map[i][j]==)
{
col++;
ans=max(large[col]=bfs(i,j,col),ans);
}
}
}
int ans2=,ansx,ansy,ansk;
for(int j=;j<=m;j++)
{
for(int i=n;i>=;i--)
{
for(int k=;k<=;k++)
{
int x=i+dx[k],y=j+dy[k];
if(!check(x,y,n,m))continue;
if(map[i][j]!=map[x][y])
{
if(ans2<large[map[i][j]]+large[map[x][y]])
{
ans2=large[map[i][j]]+large[map[x][y]];
ansx=i;ansy=j;ansk=k;
}
}
}
}
}
fout<<col<<endl<<ans<<endl<<ans2<<endl<<ansx<<" "<<ansy<<" ";
if(ansk==)fout<<"N"<<endl;
if(ansk==)fout<<"E"<<endl;
return ;
}

USACO 2.1 The Castle的更多相关文章

  1. USACO Section2.1 The Castle 解题报告

    castle解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  2. 【USACO 2.1】The Castle

    /* TASK: castle LANG: C++ SOLVE: 深搜,注意每个方向对应值.枚举去掉的墙,然后再dfs,注意墙要复原,并且dfs里要判断是否超出边界. */ #include<c ...

  3. USACO The Castle

    首先看一下题目. The CastleIOI'94 - Day 1 In a stroke of luck almost beyond imagination, Farmer John was sen ...

  4. USACO Section 2.1 The Castle

    /* ID: lucien23 PROG: castle LANG: C++ */ /********************************************************* ...

  5. USACO Section 2.1 The Castle 解题报告

    题目 题目描述 有一个城堡,城堡中有若干个房间,房间与房间之间用墙来进行分隔.现在我们需要统计这个城堡有多少个房间,并且还要找出最大的房间的面积是多少(一个单元格就代表一个单元面积).城堡的主人现在想 ...

  6. USACO castle

    <pre name="code" class="cpp"><pre>USER: Kevin Samuel [kevin_s1] TASK ...

  7. [USACO Section 2.1]城堡 The Castle (搜索)

    题目链接 Solution 比较恶心的搜索,思路很简单,直接广搜找联通块即可. 但是细节很多,要注意的地方很多.所以直接看代码吧... Code #include<bits/stdc++.h&g ...

  8. Usaco Training [2.1] The Castle 搜索

    传送门 题目的输出的4个信息 前两个很容易,dfs,bfs都可以,图怎么建都可以 后两个在搜索的时候记录belong[i][j]和已有的size即可 代码应该比不少题解清晰吧 #include < ...

  9. 洛谷P1457 城堡 The Castle

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

随机推荐

  1. window.close() 关闭当前浏览器页

    function eseFun() { var browserName = navigator.appName; //获取浏览器名称 if(browserName == "Netscape& ...

  2. 明白这十个故事-->你也就参悟了人生 .

    1.断箭 不相信自己的意志,永远也做不成将军.  春秋战国时代,一位父亲和他的儿子出征打仗.父亲已做了将军,儿子还只是马前卒.又一阵号角吹响,战鼓雷鸣了,父亲庄严地托起一个箭囊,其中插着一只箭.父亲郑 ...

  3. IOS命名

    NS开头的名称不要出现. NS系统名称开头. 命名缩写只用于通用专业术语,如URL,不可自创命名缩写,如Ctr.Msg.命名宁可长一些,也不要难于理解. 是否在看别人代码时各种缩写而不知其所以然?简短 ...

  4. IOS之UIAlert​Controller

    你知道 UIAlertView.UIActionSheet (以及它们各自的 delegate protocols) 在 iOS 8 中已经被废弃了吗? 这是真的.在你的代码中按住 ⌘ 点击 UIAl ...

  5. 使用Azure CDN更快速的交付内容

    WEB加速服务是最基本也是应用最广泛的CDN加速服务,主要针对html文件,CSS,图片,JS,flash动画等更新频率低的小文件加速.通过将这些小文件缓存到Azure CDN的边缘节点,减少源站的访 ...

  6. pyhton中的__new__和__init__

    首先__new__() 函数只能用于从object继承的新式类:其次,object将__new__()方法定义为静态方法,并且至少需要传递一个参数cls,cls表示需要实例化的类,此参数在实例化时由P ...

  7. uiviewcontroller 键盘不遮挡信息

    //添加监听事件 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow: ...

  8. shiro 配置拦截规则之后css和js等失效

    使用shiro作为平台的权限管理工具,shiro的配置文件如下: package com.ros.config; import java.util.LinkedHashMap;import java. ...

  9. HDOJ1195 双向BFS //单向也可以过 没想清

    #include<cstdio> #include<map> #include<vector> #include<stack> #include< ...

  10. 自动发表QQ空间说说

    require("gb2312toutf8") local http = require "socket.http" local surl = "ht ...