題意:
分析:n<=
10000個字
符串,|
l|<=
100,可以
滾動,如
果滾動後
相同,算
同乙個,
問有多少
個不同的
串
最小**:表示法表
示一下每
個字串
,然後丟
到set
裡,輸出
個數就好
了
//
// created by taosama on 2015-10-30
////#pragma comment(linker, "/stack:1024000000,1024000000")
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define pr(x) cout << #x << " = " << x << " "
#define prln(x) cout << #x << " = " << x << endl
const
int n = 1e5 + 10, inf = 0x3f3f3f3f, mod = 1e9 + 7;
int k, n;
char s[205];
int getmin()
return min(i, j);
}int main()
printf("%d\n", cnt.size());
}return
0;}
HDU 2609 How many 最小表示法
題目大意 有n個有01組成的字串,每個字串都代表乙個項鍊,那麼該字串就是乙個環狀的結構,求可以經過迴圈旋轉,最後不同的串有多少個。演算法思想 將每個字串轉換成最小串,然後放在set裡面去重。最小表示法 迴圈字串的最小表示法的問題可以這樣描述 對於乙個字串s,求s的迴圈的同構字串s 中字典序最小的乙個...
HDU2609 How many(最小表示法)
題意 給n個長度100以內的字串,如果兩個字串迴圈移位可以得到相等的結果,那麼就認為這兩個字串相等。求這n個字串一共包含多少個不同的字串。思路 顯然每個串迴圈移位得到的最小值是一定的,可以先用最小表示法處理出每個字串的最小值,排個序,然後只需比較相鄰的兩個串是否相同就行了。include inclu...
HDU 2609 How many 最小表示法
題目傳送門 題意 給出n個01串,通過迴圈可以相同的串算一類,求一共有幾類串。思路 暴力,把所有串都變成最小表示法,然後排個序掃一遍就行了。ac code include include include include include include using namespace std cons...