題目大意:
給定乙個長為 n
nn ,寬為 m
mm 的 01
0101
矩陣, 1
11 代表連通(連通形式為 8
88 連通),將每乙個聯通塊標上相同的字母,形態相似(通過對稱旋轉可轉換成同一種形式)的連通塊字母也要相同,輸出標記後的矩陣
題目分析:
求連通塊可以使用 flo
odfi
ll
flood\ fill
floodf
ill 的搜尋方式進行搜尋,此題的關鍵是如何通過雜湊來判斷連通塊形態相似
給出一種雜湊函式為:求連通塊內所有點的兩點距離之和
此雜湊值是乙個浮點數,但切記不可不開根號,因為距離平方和是乙個大概率會衝突的雜湊函式,而距離和衝突概率則會小很多
如果只使用此雜湊還是出現了衝突則需要引入新的雜湊來減小衝突(此題不需要)
具體細節見**:
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define inf 0x3f3f3f3f
#define inf 0x3f3f3f3f3f3f3f3f
//#define int ll
using
namespace std;
intread()
while
(ch>=
'0'&& ch<=
'9')
return res*flag;
}const
int maxn =
105;
const
int mod =
1e9+7;
const
double pi =
acos(-
1);const
double eps =
1e-8
;struct nodenod[maxn*maxn]
;int n,m,x,cnt,id=
'a';
char a[maxn]
[maxn]
;void
dfs(
int x,
int y)
}double
get_hash()
char
get_id
(double key)
signed
main()
for(
int i =
1;i <= n;i++
)puts
(a[i]+1
);return0;
}
Acwing 1402 星空之夜
這題思路很好看,但實現卻很難,用到了歐幾里得距離來代表乙個星群的形狀,對乙個星群,任意兩點 從這些可以組成星群的點中抽取兩個點 相當於集合 之間的距離之和 就好比有1 2 3 4 5五個點 找1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5的距離之和。g代表乙個形狀對應...
1402 星空之夜
原題鏈結 夜空深處,閃亮的星星以星群的形式出現在人們眼中,形態萬千。乙個星群是指一組非空的在水平,垂直或對角線方向相鄰的星星的集合。乙個星群不能是乙個更大星群的一部分。星群可能是相似的。如果兩個星群的形狀 包含星星的數目相同,那麼無論它們的朝向如何,都認為它們是相似的。通常星群可能有 8 種朝向,如...
資料結構之單鏈表,實現浪漫星空
開發工具 vs2019 圖形庫 easyx 2019 pragma once include include include define max star 100 最大星星數 define screen width 720 螢幕寬度 define screen hight 480 螢幕高度 def...