USACO 2.1 The Castle
题目大意:给你一个城堡让你求有多少房间,最大房间有多大,敲掉一堵墙后最大的房间有多大,敲掉那座墙
思路:比较恶心的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的更多相关文章
- USACO Section2.1 The Castle 解题报告
castle解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...
- 【USACO 2.1】The Castle
/* TASK: castle LANG: C++ SOLVE: 深搜,注意每个方向对应值.枚举去掉的墙,然后再dfs,注意墙要复原,并且dfs里要判断是否超出边界. */ #include<c ...
- USACO The Castle
首先看一下题目. The CastleIOI'94 - Day 1 In a stroke of luck almost beyond imagination, Farmer John was sen ...
- USACO Section 2.1 The Castle
/* ID: lucien23 PROG: castle LANG: C++ */ /********************************************************* ...
- USACO Section 2.1 The Castle 解题报告
题目 题目描述 有一个城堡,城堡中有若干个房间,房间与房间之间用墙来进行分隔.现在我们需要统计这个城堡有多少个房间,并且还要找出最大的房间的面积是多少(一个单元格就代表一个单元面积).城堡的主人现在想 ...
- USACO castle
<pre name="code" class="cpp"><pre>USER: Kevin Samuel [kevin_s1] TASK ...
- [USACO Section 2.1]城堡 The Castle (搜索)
题目链接 Solution 比较恶心的搜索,思路很简单,直接广搜找联通块即可. 但是细节很多,要注意的地方很多.所以直接看代码吧... Code #include<bits/stdc++.h&g ...
- Usaco Training [2.1] The Castle 搜索
传送门 题目的输出的4个信息 前两个很容易,dfs,bfs都可以,图怎么建都可以 后两个在搜索的时候记录belong[i][j]和已有的size即可 代码应该比不少题解清晰吧 #include < ...
- 洛谷P1457 城堡 The Castle
P1457 城堡 The Castle 137通过 279提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 我们憨厚的USACO ...
随机推荐
- uvm_factory——我们的工厂(一)
factory 机制是实现(功能):通过一个字符串来创建此字符串所代表的的类的一个实例. //----------------------------------------------------- ...
- 【Web应用-Kudu】Kudu 管理和诊断 azure web 应用
Azure Kudu是 GitHub 上的一个开源项目,Kudu 站点 (也称为网站控制管理 SCM) 提供了一系列的在线工具,可以帮助用户查看 web 应用的设置,诊断 web 应用,以及安装 w ...
- sping IOC的设计原理和高级特性
1. IOC 是Spring的内核,字面意思是控制反转,并提出了DI依赖注入的概念. 2.Spirng 容器的设计中,一个是实现BeanFactory 接口的简单饿汉容器,另外一个是比较高级的Appl ...
- Web项目之Django基础
Django目录: python项目Django(web服务) python项目Django(HTTP协议) python项目Django(Django的安装与使用) python项目Django(U ...
- robotframe处理日志中文问题
unicode('${addr1.text}',"utf-8")
- 【Codeforces #228】Solutions
http://codeforces.com/contest/389 重新把号刷到Div 1 准备ACM?(我这么菜还是玩玩算了……) 官方题解出的很快 Div2 A: 怎么做都行……随便找俩数减就可以 ...
- 洛谷 P1032 字串变换 (BFS)
题目传送门 我即使是死了,钉在棺材里了,也要在墓里,用这腐朽的声带喊出 STL大法好 这题最麻烦的其实是处理字符串,真正的搜索部分我个人认为也就只有橙题或黄题的难度.而处理字符串,正如前面所说,STL ...
- Bootstrap历练实例:分页状态
分页的状态 下面的实例演示了上表中所讨论的 class .disabled..active 的用法: <!DOCTYPE html><html><head>< ...
- iOS 优秀博客
中文 iOS/Mac 开发博客列表 GitHub 上排名前 100 的 Objective-C 项目简介 GitHub 上都有哪些值得关注学习的 iOS 开源项目? iOS开发系列文章(持续更新……) ...
- JS原型链(一)
一.创建对象 // 第一种方式:字面量 var o1 = {name: 'o1'}; var o2 = new Object({name: 'o2'}); // 第二种方式:构造函数 var M = ...