hdu 1880 魔咒字典

2021-08-04 23:09:44 字數 916 閱讀 7362

題意:略

思路:一開始就是想到了正確的思路,但是**寫炸了,死活過不了。這題嘛,就是建議乙個魔咒與咒語的雙向對映。首先用字串hash將魔咒與咒語的hash值給算出來,之後用兩個map儲存魔咒的hash與魔咒下標,咒語的hash與咒語的下標。hash用的是優秀的bkdr演算法,好寫而且不容易衝突。最後查詢的時候有乙個技巧,就是如果說以』[『開頭,那麼肯定是魔咒,就輸出咒語,反之輸出魔咒。一開始確實是沒有想到如果說魔咒的hash和咒語的hash衝突了怎麼辦,那麼就用上面所說的那個技巧就可以完美解決。

**:

1 #include 2 #include 

3 #include 4

using

namespace

std;56

const

int maxn = 100005;7

int num = 0;8

9char mz[maxn][50

];10

char zy[maxn][100

];11

12 mapmpmz,mpzy;

1314 unsigned int myhash(char*s)

1523

24return (h & 0x7fffffff

);25}26

27void init(void)28

37}3839

intmain()

4057

58init();

5960

intn;

6162 scanf("

%d",&n);

6364

getchar();

6566

while (n--)

6781

else

8295}96

}9798return0;

99 }

hdu 1880 魔咒字典

題意 略 思路 一開始就是想到了正確的思路,但是 寫炸了,死活過不了。這題嘛,就是建議乙個魔咒與咒語的雙向對映。首先用字串hash將魔咒與咒語的hash值給算出來,之後用兩個map儲存魔咒的hash與魔咒下標,咒語的hash與咒語的下標。hash用的是優秀的bkdr演算法,好寫而且不容易衝突。最後查...

hdu1880(魔咒詞典)

1.下面是二分查詢 ac include include include define max 100005 typedef struct node node node mag1 max node mag2 max int cmp1 const void a,const void b int cmp...

魔咒詞典 HDU 1880

感覺這題巨毒瘤,讀入字串方面調了好久才避免了讀入空白字元。思路就是對每條資訊的魔咒和功能的記錄在s1和s2串裡,並在ihash陣列裡通過資訊的編號 cnt 確定存放的列,將魔咒 魔咒的hash值存在第一行 或功能 功能的hash值存在第2行 的hash值存入。然後輸入乙個要查詢的字串,就先求出其ha...