题解:洛谷 P2919 [USACO08NOV] Guarding the Farm S
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】洛谷P2919 [USACO08NOV] Guarding the Farm S - 洛谷【题目描述】农场有许多小山丘约翰农夫希望在这些小山丘上放置守卫以确保他珍贵的奶牛的安全。他想知道如果他希望在每个小山丘的顶部放置一个守卫他需要多少守卫。他有一张地图这张地图是一个整数矩阵矩阵有N NN行1 N ≤ 700 1 N \leq 7001N≤700和M MM列1 M ≤ 700 1 M \leq 7001M≤700。矩阵中的每个元素表示一个高度H i j H_{ij}Hij​0 ≤ H i j ≤ 10 , 000 0 \leq H_{ij} \leq 10,0000≤Hij​≤10,000。请帮助他确定地图上有多少个山顶。一个山顶是由一个或多个相邻且具有相同值的矩阵元素组成这些元素被地图的边缘或具有较低较小高度的元素完全包围。如果两个不同的元素的X XX坐标差的绝对值不大于 1且Y YY坐标差的绝对值也不大于 1则它们是相邻的。【输入】* 第 1 行两个用空格分隔的整数N NN和M MM* 第 2 行到第N 1 N1N1行第i 1 i1i1行描述矩阵的第i ii行包含M MM个用空格分隔的整数H i j H_{ij}Hij​【输出】* 第 1 行一个整数表示山顶的数量【输入样例】8 7 4 3 2 2 1 0 1 3 3 3 2 1 0 1 2 2 2 2 1 0 0 2 1 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 2 2 1 1 0 0 1 1 1 2 1 0【输出样例】3【算法标签】#普及plus【代码详解】#includebits/stdc.husingnamespacestd;typedefpairint,intPII;// 定义坐标对类型constintN705;// 定义地图最大尺寸intn,m;// n: 行数m: 列数inth[N][N];// 存储每个点的高度boolvis[N][N];// 标记每个点是否被访问过// 八个方向的偏移量intdx[8]{-1,-1,-1,0,0,1,1,1};intdy[8]{-1,0,1,-1,1,-1,0,1};// 广度优先搜索函数判断(x,y)是否是山丘的最高点boolbfs(intx,inty){intvalh[x][y];// 记录当前连通块的高度值boolflagtrue;// 标记当前连通块是否满足山丘条件queuePIIq;// 定义队列用于BFSq.push({x,y});// 将起点加入队列vis[x][y]true;// 标记起点已访问while(!q.empty())// 当队列不为空时循环{intxxq.front().first,yyq.front().second;// 取出队首坐标q.pop();// 弹出队首for(inti0;i8;i)// 遍历八个方向{intnxxxdx[i],nyyydy[i];// 计算相邻坐标if(nx1||nxn||ny1||nym)// 检查边界continue;if(h[nx][ny]val)// 如果相邻点高度大于当前连通块高度flagfalse;// 不满足山丘条件if(h[nx][ny]val!vis[nx][ny])// 如果相邻点高度相同且未访问{q.push({nx,ny});// 加入队列vis[nx][ny]true;// 标记已访问}}}returnflag;// 返回当前连通块是否满足山丘条件}intmain(){cinnm;// 输入行数和列数for(inti1;in;i)// 读入高度图for(intj1;jm;j)cinh[i][j];intans0;// 山丘数量for(inti1;in;i)// 遍历整个地图for(intj1;jm;j){if(!vis[i][j])// 如果当前点未被访问{if(bfs(i,j))// 执行BFS判断是否是山丘ans;// 如果是山丘计数加1}}coutansendl;// 输出山丘数量return0;}【运行结果】8 7 4 3 2 2 1 0 1 3 3 3 2 1 0 1 2 2 2 2 1 0 0 2 1 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 2 2 1 1 0 0 1 1 1 2 1 0 3

相关新闻

30天构建生产级AI助手:从Python环境到企业级架构

30天构建生产级AI助手:从Python环境到企业级架构

1. 项目概述:构建生产级AI助手的30天旅程 这个系列教程将带你从零开始构建一个名为UltraBot的生产级AI助手框架。不同于市面上简单的API调用示例,这套课程采用渐进式设计,每天完成一个小目标,最终组合成一个功能完备的智能体系统。…

2026/7/27 9:01:28阅读更多 →
AI编程实战:Claude与Codex协作开发大型项目

AI编程实战:Claude与Codex协作开发大型项目

1. 从零到一:AI编程大型项目的实战方法论 在经历了三个大型项目的完整重写后,我终于摸索出一套行之有效的AI编程方法论。这套方法的核心在于将Claude和Codex两大AI工具的能力边界划分清楚,让它们各司其职形成高效协作。Claude扮演架构师和评审…

2026/7/27 9:01:28阅读更多 →
行业 分享

行业 分享

G2026-深圳站 陈霈霖-脱敏.pdf(公司被30只龙虾包围了) 韩光祖v3脱敏稿.pdf LLM Agent驱动SRE生产力跃迁的实践与度量 蓝鲸社区 724运维日活动 徐珮文-脱敏.pptx Agent时代的到来 梁健聪-终稿脱敏-货拉拉大数据智能运维AI Agent探索实践.pdf 范…

2026/7/27 9:01:28阅读更多 →
Instatic:一个 Bun 服务器打包整条建站链路,押注“干净静态页“的自托管 CMS

Instatic:一个 Bun 服务器打包整条建站链路,押注“干净静态页“的自托管 CMS

Instatic:一个 Bun 服务器打包整条建站链路,押注"干净静态页"的自托管 CMS 核心观点 现代建站的痛点不是缺工具,而是工具太多——Headless CMS、框架、托管、表单服务、CDN、Analytics,每个都有独立账单和 2 点钟宕机…

2026/7/27 10:30:27阅读更多 →
Rails移动适配实战:使用Mobile Fu构建响应式用户体验

Rails移动适配实战:使用Mobile Fu构建响应式用户体验

Rails移动适配实战:使用Mobile Fu构建响应式用户体验 【免费下载链接】mobile-fu Automatically detect mobile requests from mobile devices in your Rails application. 项目地址: https://gitcode.com/gh_mirrors/mo/mobile-fu 在当今移动优先的时代&…

2026/7/27 10:30:27阅读更多 →
如何快速掌握League Director:英雄联盟回放视频创作完整指南

如何快速掌握League Director:英雄联盟回放视频创作完整指南

如何快速掌握League Director:英雄联盟回放视频创作完整指南 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/leaguedirector 你…

2026/7/27 10:30:27阅读更多 →
我发现手机界面显示的运行内存是假的----骗人的

我发现手机界面显示的运行内存是假的----骗人的

实际的情况是这样的:actorsunpc22:~/android_ws/app_framework$ adb shell free -htotal used free shared buffers Mem: 7.2G 7.0G 216M 50M 2.5M -/ buffers/cache: 7.0G 218M…

2026/7/27 10:30:27阅读更多 →
手机内存速度是swap速度的100倍-----CPU+内存基本决定速度

手机内存速度是swap速度的100倍-----CPU+内存基本决定速度

即使有swap,但是速度会很慢的。

2026/7/27 10:30:27阅读更多 →
编写程序在人生低谷期,程序安排低难度创作任务,依靠小成就逐步重建内心热爱。

编写程序在人生低谷期,程序安排低难度创作任务,依靠小成就逐步重建内心热爱。

低谷期微创作系统:用小成就感重建内心热爱一、实际应用场景描述在《心理健康与创新能力》课程中,学生常经历这样的阶段:- 项目失败、求职受挫、人际关系破裂- 长期缺乏正向反馈,进入“人生低谷期”- 想重新开始,但面对…

2026/7/27 10:28:27阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/27 1:14:34阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/27 1:14:52阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/27 1:14:56阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:24阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:24阅读更多 →
2007-2023年各市区县生态文明建设示范区DID

2007-2023年各市区县生态文明建设示范区DID

数据简介 自改革开放以来,我国依赖高投入、高资源消耗和高污染等传统发展模式实现了经济短期内的快速增长, 然而这也导致了严重的生态环境危机。因此,国家有力于推动企业高质量经济发展,协同生态保护的方针,从而从201…

2026/7/27 0:00:24阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →