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 ...
随机推荐
- 基于 Azure IaaS 搭建企业官网的规划和实践
本课程主要介绍了基于 Azure IaaS 搭建企业官网的案例分析和实践,实践讲解如何使用 Azure 门户创建虚拟机, 创建虚拟网络, 创建存储账户等. 具体包括项目背景介绍, 项目架构, 准备和实 ...
- CSS3与弹性盒布局
1.弹性盒布局对齐模式 1.1.弹性盒子 在规定弹性盒子之中的子级元素换行显示之前父级元素必须是弹性盒子模型,也就是设置 display 为 flex 代码如下: <!DOCTYPE html& ...
- const、let、var的区别
const不能从字面上来理解,他不能修改的是栈内存在的值和地址. 使用const声明的是常量,在后面出现的代码中不能再修改该常量的值. 怎么理解栈内存在的值和地址呢?就要从javascript的类型说 ...
- linux_1
注: 创建软连接: "ln -s xxx 路径1" 在路径1创建xxx的软连接 特点: 1.文件类型 l 2.相当于windows的快捷方式 创建硬链接: "ln xxx ...
- C-基础:详解sizeof和strlen,以及strstr
sizeof和strlen (string.h) 先看几个例子(sizeof和strlen之间的区别): (1) 对于一个指针, char* ss ="0123456789"; ...
- python之道07
2.用户输入一个数字,判断一个数是否是水仙花数. 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数, 例如: 153 = 1******3 + 5****** ...
- C06 变量和存储类型
目录 全局变量 局部变量 存储类型 全局变量和局部变量 变量的作用域 作用域:某些事物起作用或有效的区域. 变量的使用范围称为变量的作用域. 变量的作用域决定了变量的可操作性和有效性. C语言变量的作 ...
- shell脚本,提取ip地址和子网掩码,和查外网ip地址信息。
#提取IP地址和子网掩码 [root@localhost ~]# ifconfig eth0|grep 'inet addr'|awk -F'[ :]+' '{print $4"/& ...
- HTML5 Canvas奇幻色彩Loading加载动画
转自 https://www.html5tricks.com/tag/loading%E5%8A%A8%E7%94%BB/
- 使用Spring AOP实现业务依赖解耦
Spring IOC用于解决对象依赖之间的解耦,而Spring AOP则用于解决业务依赖之间的解耦: 统一在一个地方定义[通用功能],通过声明的方式定义这些通用的功能以何种[方式][织入]到某些[特定 ...