P2919 [USACO08NOV]守护农场Guarding the Farm
链接:P2919
-----------------------------------
一道非常暴力的搜索题
-----------------------------------
注意的是,我们要从高出往低处搜,所以要sort一边
然后没有什么值得成为绿题的部分了
绝对是恶评
-----------------------------------
题面有歧义,我们在搜索的时侯扩展的条件是<=,不是等于
-----------------------------------

#include <iostream> #include<cstdio> #include<algorithm> using namespace std; struct so{ int x; int y; int v; }s[500000]; int ma[800][800]; bool cmp(so x,so y){ return x.v>y.v; } int vis[800][800]; int x,y,n,m,now; int ans; int p; int xc[8]={1,1,0,-1,-1,-1,0,1}; int yc[8]={0,1,1,1,0,-1,-1,-1}; void dfs(int x,int y){ if(x<0||y<0||x>n||y>m){ return ; } vis[x][y]=1; for(int i=0;i<=7;++i){ if(ma[x+xc[i]][y+yc[i]]<=ma[x][y]&&!vis[x+xc[i]][y+yc[i]]) dfs(x+xc[i],y+yc[i]); } return ; } int main(){ cin>>n>>m; for(int i=1;i<=n;++i){ for(int j=1;j<=m;++j){ scanf("%d",&now); ma[i][j]=now; p++; s[p].x=i; s[p].y=j; s[p].v=now; } } sort(s+1,s+p+1,cmp); for(int i=1;i<=p;++i){ if(!vis[s[i].x][s[i].y]){ ans++; dfs(s[i].x,s[i].y); } } cout<<ans; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】