传送门

题目的输出的4个信息

前两个很容易,dfs,bfs都可以,图怎么建都可以

后两个在搜索的时候记录belong[i][j]和已有的size即可

代码应该比不少题解清晰吧

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, a, b) for (int i = a; i <= b; ++i) const int N = ; int m, n, a[N][N], bel[N][N], siz[N * N], cnt, mx; int b[N][N][], dir[][] = {{, -}, {-, }, {, }, {, }}; bool vis[N][N]; void dfs(int x, int y) {
if (!vis[x][y] && x > && x <= m && y > && y <= n) {
siz[cnt]++;
vis[x][y] = ;
bel[x][y] = cnt;
rep(i, , ) if (!b[x][y][i]) {
dfs(x + dir[i][], y + dir[i][]);
}
}
} int main() {
scanf("%d%d", &n, &m); rep(i, , m) rep(j, , n) {
scanf("%d", &a[i][j]);
int t = a[i][j];
b[i][j][] = (t % > ); t -= t % ;
b[i][j][] = (t % > ); t -= t % ;
b[i][j][] = (t % > ); t -= t % ;
b[i][j][] = (t % > );
} rep(i, , m) rep(j, , n) if (!vis[i][j]) {
++cnt;
dfs(i, j);
mx = max(mx, siz[cnt]);
} printf("%d\n%d\n", cnt, mx); int dx, dy; char ch;
rep(j, , n) for(int i = m; i >= ; --i) rep(k, , ) {
if (bel[i][j] != bel[i + dir[k][]][j + dir[k][]]) {
if (siz[bel[i][j]] + siz[bel[i + dir[k][]][j + dir[k][]]] > mx) {
mx = siz[bel[i][j]] + siz[bel[i + dir[k][]][j + dir[k][]]];
if (k == ) dx = i + dir[k][], dy = j + dir[k][], ch = 'E';
else if (k == ) dx = i, dy = j, ch = 'N';
else if (k == ) dx = i, dy = j, ch = 'E';
else dx = i + dir[k][], dy = j + dir[k][], ch = 'N';
}
}
}
printf("%d\n%d %d %c\n", mx, dx, dy, ch);
return ;
}

Usaco Training [2.1] The Castle 搜索的更多相关文章

  1. 关于USACO Training

    做了这么久的题目,突然发现最经典的 USACO Training 还没有做过?加速水一遍吧!我会把题解放在上面的.

  2. USACO Training Section 1.1 坏掉的项链Broken Necklace

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  3. USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers

    P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers 题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一 ...

  4. USACO Training Section 1.1 Your Ride Is Here

    题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...

  5. USACO Training Section 1.2 双重回文数 Dual Palindrom

    题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就 ...

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

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

  7. Luogu USACO Training 刷水记录

    开个坑记录一下刷USACO的Training的记录 可能会随时弃坑 只有代码和做法简述 可能没有做法简述 [USACO1.1]你的飞碟在这儿Your Ride Is He… 模拟,细节已忘 #incl ...

  8. USACO Training Section 1.1 题解(共4题)

    第一题 题目传送门:你的飞碟在这儿 分析 水题一道,输入两个字符串,将它们转换为数字并同时相乘,然后判断一下它们是不是对于47同余就可以了. 代码 #include<bits/stdc++.h& ...

  9. USACO Section 2.1 The Castle 解题报告

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

随机推荐

  1. STM32 HAL库学习系列第7篇---定时器TIM 输入捕获功能

    测量脉冲宽度或者测量频率   基本方法 1.设置TIM2 CH1为输入捕获功能:  2.设置上升沿捕获:  3.使能TIM2 CH1捕获功能:  4.捕获到上升沿后,存入capture_buf[0], ...

  2. JavaScript-倒计时效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 第七章 手动部署Fisco Bcos 区块链并完成新增群组,在原有群组中新增机构

    鉴于笔者以前各大博客教程都有很多人提问,早期建立一个技术交流群,里面技术体系可能比较杂,想了解相关区块链开发,技术提问,请加QQ群:538327407 目标 1.新增群组搭建完整联盟链 2.根据群组新 ...

  4. 关于char[]转换成LPCWSTR的有关问题[转]

    一.问题的原因:VS2010默认采用宽字符UNICODE编码方式,定义了Unicode,因此相关的字符串必须为unicode字符串,而非ascii字符串. LPCWSTR中的W是宽字符的意思,是UNI ...

  5. Codeforces Gym101505G:Orchard Division(扫描线+线段树第k大)

    题目链接 题意 给出一个m*m的地图,上面有n个点,现在需要用一个自定义面积的矩形笼罩住恰好n/2个点,并且这个矩形需要有一个点在至少一个角落上,问这个矩形最小的面积是多少. 思路 有点类似于扫描线. ...

  6. scrapy基础知识之 Scrapy 和 scrapy-redis的区别:

    Scrapy 和 scrapy-redis的区别 Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础 ...

  7. json字符串转换成java对象

  8. Spring Boot微服务电商项目开发实战 --- 多环境部署配置、端口号统一配置及Dubbo提供者消费者实现

    昨天已经搭建好了SpringBoot基于Maven的基础父子级项目,今天开始进入项目分模块及分布式实现.首先我们基于昨天的项目,在父级工程下建lyn-sys,lyn-customer,lyn-good ...

  9. k8s学习 - 概念 - Deployment

    k8s学习 - 概念 - Deployment 有了 ReplicaSet 还需要有 Deployment 的原因是希望有一个控制器能管理部署更新时候的版本控制问题.一个 Deployment 可以管 ...

  10. 解决jenkins 发送邮件图片乱码问题

    1.在本地mac上测试邮件发送正常 发送邮件内容图片没有乱码 2.公司测试服务器是一台windows2008的系统jmeter + ant  jenkins 安装完成后 设置邮件发送格式模板,设置附件 ...