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

思路:比较恶心的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. Android学习总结(二)——Service基本概念和生命周期

    好了,前面我们已经学习了Activity的知识,相信大家也有一定的理解,但是还是不能放松,Android四大组件,我们才学习了一个而已,接下我们继续学习Service.计划总结如下内容: 一.Serv ...

  2. HDU 1950 Bridging signals (LIS,O(nlogn))

    题意: 给一个数字序列,要求找到LIS,输出其长度. 思路: 扫一遍+二分,复杂度O(nlogn),空间复杂度O(n). 具体方法:增加一个数组,用d[i]表示长度为 i 的递增子序列的最后一个元素, ...

  3. block总结我的

    1) struct Block_descriptor { unsigned long int reserved; unsigned long int size; void (*copy)(void * ...

  4. JS原型、原型链、构造函数、实例与继承

    https://cloud.tencent.com/developer/article/1408283 https://cloud.tencent.com/developer/article/1195 ...

  5. python_111_动态导入模块

    lib下aa.py文件内容: class C: def __init__(self): self.name='alex' from lib import aa#正常导入 print(aa.C) 动态导 ...

  6. QT5:第八章 信号与槽机制

    一.简介 QT编程中信号与槽用于处理界面各个组件的交互,类似与MFC的消息循环和绑定 注意:在使用信号与槽的类中,必须在类的定义中加入宏定义Q_OBJECT 信号(Signal)就是在特定情况下被发射 ...

  7. HTML5触摸事件

    touchstart .touchmove .touchend 事件 touchstart事件:当手指触摸屏幕时触发,即使有一个手指放在屏幕上也会触发. touchmove事件:当手指在屏幕上滑动时触 ...

  8. MYSQL数据库SQL语句集锦

    *特别说明:FILED代表数据表字段,CONDITIONS代表where之后的条件,TABLENAME代表数据表名   []中括号内的内容代表 可有可无. 创建数据库 create  database ...

  9. 杭电 1503 Advanced Fruits

    Description The company "21st Century Fruits" has specialized in creating new sorts of fru ...

  10. Ubuntu 14.04在虚拟机上的桥接模式下设置静态IP

    1.虚拟机--->虚拟机设置 将虚拟机设置为桥接模式 2.查看window 网卡以及IP信息 cmd下输入 ipconfig -all 可以看到,我的网卡为Realtek PCIe GBE Fa ...