[USACO08NOV]瀹堟姢鍐滃満Guarding the Farm
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[USACO08NOV]瀹堟姢鍐滃満Guarding the Farm相关的知识,希望对你有一定的参考价值。
鏍囩锛?a href='http://www.mamicode.com/so/1/lin' title='lin'>lin
鍒ゆ柇 space 鏂瑰悜 return 鏍囪 main end sum棣栧厛鎴戣鎻愰啋鍚勪綅锛氭暟缁勫紑鎵撶偣锛屼笉鐒朵綘浼氭案杩?3鍒?span style="text-decoration: line-through">锛堥剻瑙嗗嚭鏁版嵁鐨勪汉锛?/span>锛屾湰棰樼敤DFS灏卞彲浠ヤ簡锛屽幓鏋氫妇姣忎竴绉嶇殑鏂瑰悜锛屽垽鏂槸鍚︿綆浜庡畠锛岀劧鍚庡氨娌℃湁鐒跺悗浜嗭紝
浠g爜锛?/p>
#include<bits/stdc++.h> using namespace std; struct str { int h,z,g;//瀹氫箟缁撴瀯浣擄紝鎳? }b[10000001]; int a[1100][1100],k; bool cmp(str x,str y) { return x.g>y.g;//鍒ゆ柇鏄惁浣庝簬浠? } int ans=0,sum=0; int n,m; void dfs(int x,int y)//鍘绘壘 { // if(x+1>n&&x-1<1&&y+1>m&&y-1<1) return ; sum++; int ji_lu=a[x][y];//璁板綍涓€涓? a[x][y]=9999999;//鏍囪鏄惁鎵捐繃浜? //鍏釜鏂瑰悜 if(ji_lu>=a[x+1][y]) dfs(x+1,y); if(ji_lu>=a[x-1][y]) dfs(x-1,y); if(ji_lu>=a[x][y-1]) dfs(x,y-1); if(ji_lu>=a[x][y+1]) dfs(x,y+1); if(ji_lu>=a[x+1][y-1]) dfs(x+1,y-1); if(ji_lu>=a[x+1][y+1]) dfs(x+1,y+1); if(ji_lu>=a[x-1][y-1]) dfs(x-1,y-1); if(ji_lu>=a[x-1][y+1]) dfs(x-1,y+1); } int main() { cin>>n>>m; for(int i=0;i<=m+1;i++)//闃叉瓒婄晫 { a[0][i]=9999999; a[n+1][i]=9999999; } for(int i=0;i<=n+1;i++)//闃叉瓒婄晫 { a[i][0]=9999999; a[i][m+1]=9999999; } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { k++; cin>>a[i][j]; b[k].g=a[i][j];//璁板綍 b[k].h=i; b[k].z=j; } } sort(b+1,b+1+n*m,cmp);//鎺掑簭 k=0; while(sum<n*m)//sum涓烘壘浜嗗灏戝骇銆? { ans++; while(a[b[k].h][b[k].z]==9999999) k++;//涓嬫爣 dfs(b[k].h,b[k].z); } cout<<ans<<endl; }
銆€銆€
以上是关于[USACO08NOV]瀹堟姢鍐滃満Guarding the Farm的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu18涓嬩娇鐢╯upervisor瀹堟姢golang杩涚▼
洛谷 P2919 [USACO08NOV]守护农场Guarding the Farm
洛谷 P2920 [USACO08NOV]时间管理Time Management
[USACO08NOV]时间管理Time Management