jimmy 和 symbol 約好一起看星星,浩瀚的星空可視為乙個長為 n、寬為 m 的矩陣,矩陣中共有 n×m 個位置,乙個位置可以用座標 (i,j)(1≤i≤n,1≤j≤m)來表示。每個位置上可能是空的,也可能有乙個星星。
對於乙個位置 (i,j),與其相鄰的位置有左邊、左上、上面、右上、右邊、右下、下面、左下 8 個位置。相鄰位置上的星星被視為同乙個星座,這種關係有傳遞性,例如若 (1,1),(1,2),(1,3)三個位置上都有星星,那麼這三個星星視為同乙個星座。包含的星星數量相同的星座被視為乙個星系(乙個星系中的星座不一定相鄰),星系的大小為星系中包含的所有星星數量。
由於 symbol 太喜歡星系了,他就想考一考 jimmy,讓 jimmy 求出星空中有多少個星系,他還想知道,最大的星系有多大。
第一行兩個整數 n,m 表示矩陣的長寬。
接下來 n行每行 m個字元,每個字元只可能是』.『或』』(不含引號,下同)。這 n行中第 i行的第j個字元是』'表示位置 (i,j)上有乙個星星,否則表示它是空的。
僅一行兩個整數,用空格分隔開,分別表示星系的數量與最大星系的大小。
輸入樣例1
57*
....
....
**..
*.*.
..*.
...*
....
...*
..
輸入樣例2
1010*
*..*
*.**
.***
....
*..*
...*
*.**
....
*..*
....
....
....
.**.
..**
.*..
.*.*
....
*...
....
...*
**..
*.*.
..**
*..*
...
輸出樣例1
3
4
輸出樣例2
4
12
對於 20%的資料,n,m≤20,最大星系大小不超過 200。
對於 50%的資料,n,m≤400。
對於 70%的資料,n,m≤1100。
對於100%的資料,2≤n,m≤1500,最大星系大小不超過 100000。
深搜即可 讀懂題目就很好做了
共8種方向標記最大值
#include
#include
#include
using
namespace std;
#define ll long long
ll n,m;
char c[
2010][
2010];
bool a[
2010][
2010];
ll sum[
1000010
],k,maxx,ans,maxn,t;
ll dx[8]
=;ll dy[8]
=;void
dfs(ll u,ll v)
//深搜
}int
main()
for(
int i=
1;i<=maxx;i++)if
(sum[i]
) cout<" "
}
NOI Online 3 入門組 第二題 觀星
題目傳送門 bfs和dfs的簡單題目,在這我只講bfs。我們先找到乙個 然後對其進行 bfs,並將所有訪問過的 標記為 在進行 bfs 的同時記錄下目前的 數量。當一次 bfs 結束後,我們將統計的數量放入之前開好的桶中,即將 hre s 1h 1 hres 1。如果此時 hre sh hres 為...
NOI Online 3 入門組題解
洛谷傳送門 第一題還是一如既往的水233 沒什麼好說的。統計每一條訊號。對於乙個訊號,統計sos的數量,方法就是列舉每乙個長度為3的區間,如果這個區間是 sos 那麼就統計進去。取最大數量。有乙個小坑,就是最大可能有多個,要用vector儲存。include using namespace std ...
NOI Online 1 入門組 魔法
全網都是矩陣快速冪,我只會倍增dp 其實這題與 acwing 345.牛站 還是比較像的,那題可以矩陣快速冪 倍增,這題也行。先 floyd 預處理兩點之間不用魔法最短距離 d 複雜度 o n 3 然後預處理兩點之間至多用乙個魔法的最短距離 w 初始為 w d 列舉 i,j 和一條邊 u,v,t w...