HDU 2609 最小表示法

2022-08-31 04:09:09 字數 807 閱讀 7464

題意:給定n個迴圈鏈[串],問有多少個本質不同的鏈[串](如果乙個迴圈鏈可以通過找乙個起點使得和其他串相同,那麼就認為這2個鏈是一樣的。就是求不同構的串)

思路:對於求同構串可以用最小表示法,然後判斷是否相等就可以知道這2個是否是同構了。判重用的是set

#define _crt_secure_no_deprecate#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 10000 + 5

;typedef

long

long

intll;

#define inf 0x3f3f3f3f

int minrepresentation(char *s,int

l)

else

else

if (i ==j)

k = 0

; }

}return i < j ?i : j;

}char str[maxn][105

];set

se;intmain()

if (!se.count(minstr))

}printf(

"%d\n

",se.size());

}return0;

}

HDU 2609 How many (最小表示法)

題意 n 10000個字 符串,l 100,可以 滾動,如 果滾動後 相同,算 同乙個,問有多少 個不同的 串 分析 最小 表示法表 示一下每 個字串 然後丟 到set 裡,輸出 個數就好 了 created by taosama on 2015 10 30 pragma comment linke...

HDU 2609 How many 最小表示法

題目大意 有n個有01組成的字串,每個字串都代表乙個項鍊,那麼該字串就是乙個環狀的結構,求可以經過迴圈旋轉,最後不同的串有多少個。演算法思想 將每個字串轉換成最小串,然後放在set裡面去重。最小表示法 迴圈字串的最小表示法的問題可以這樣描述 對於乙個字串s,求s的迴圈的同構字串s 中字典序最小的乙個...

HDU2609 How many(最小表示法)

題意 給n個長度100以內的字串,如果兩個字串迴圈移位可以得到相等的結果,那麼就認為這兩個字串相等。求這n個字串一共包含多少個不同的字串。思路 顯然每個串迴圈移位得到的最小值是一定的,可以先用最小表示法處理出每個字串的最小值,排個序,然後只需比較相鄰的兩個串是否相同就行了。include inclu...