ybtoj高效高階 廣搜-2
給定乙個 n*n 的網格狀地圖,每個方格 (i,j) 有乙個高度 wi,
jw_
wi,j
。如果兩個方格有公共頂點,則它們是相鄰的。
定義山峰山谷如下:
均由地圖上的乙個聯通塊組成。
所有方格高度都相同。
周圍的方格(即不屬於山峰或山谷但與山峰或山谷相鄰的格仔)高度均大於山谷的高度,或小於山峰的高度。
求地圖內山峰和山谷的數量。特別的,如果整個地圖方格的高度均相同,則整個地圖即是乙個山谷,也是乙個山峰。
有與 (x,y) 有公共頂點的點集是(x,y) 的八連通,直播時口誤
5
8 8 8 7 7
7 7 8 8 7
7 7 7 7 7
7 8 8 7 8
7 8 8 8 8
2 1
每次找乙個新的沒訪問過的點,然後和相鄰的點去進行高度的對比,
1.如果當前連通塊的高度比找到的這個點的高度大,那就是山峰
2.如果小,那就是山谷
3.如果有大有小,那就啥也不是
4.如果最後找完了, 都沒有大小關係,那就既是山谷,又是山峰
#include
#include
#include
#include
#include
using
namespace std;
int n, flag1, flag2, ans1, ans2;
int w[
1005][
1005
], vis[
1005][
1005];
int dx[8]
=;int dy[8]
=;bool
check
(int x,
int y)
void
bfs(
int x,
int y)
}else}}
}if(!flag1 &&
!flag2) ans1++
, ans2++
;//對應情況4
if(flag1 &&
!flag2) ans1++
;//對應情況2if(
!flag1 && flag2) ans2++
;//對應情況1
}int
main()
YbtOJ練習 廣搜 2 射擊問題
這道題的難點在於如何判斷在某個時刻巨龍能否打中獵物,如果每一次巨龍走完都要check一次效率太低,而注意到獵物是不動的,我們可以初始化出能打中獵物的點,只要巨龍移動到這些位置,就完成搜尋。include define x first define y second using namespace s...
ybtoj 高效高階 1 4 深搜 數獨遊戲
用字串輸入 將其轉換成數值放入陣列a 陣列l統計當前行數字的使用情況 陣列r統計當前列數字的使用情況 陣列f統計當前3 3方格數字的使用情況 列舉當前格可以填的數字 include include include using namespace std int a 10 10 l 10 10 r 1...
ybtoj 高效高階 1 4 深搜 蟲食算
記錄下字母的出現順序 從右往左 列舉每個字母可能的數字 a是加數一,b是加數二,c是和 當這三個數已經填數時 否則進製賦為 1 include include include using namespace std string s 5 char q 30 int n,t,p 30 ans 30 u...