NOI Online入門組 3 觀星

2021-10-07 04:36:00 字數 1936 閱讀 9675

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...