字串hs 雙模掛鏈 自然溢位 正確答案

2022-08-03 22:27:23 字數 2800 閱讀 7482

題目描述

小h與小y剛剛參加完uoip外卡組的初賽,就迫不及待的跑出考場對答案。 「吔,我的答案和你都不一樣!」,小y說道,」我們去找神犇們問答案吧」。 外卡組試卷中共有m道判斷題,小h與小y一共從其他n個神犇那問了答案。之後又從小g那裡得知,這n個神犇中有p個考了滿分,q個考了零分,其他神犇不為滿分或零分。這可讓小y與小h犯了難。你能幫助他們還原出標準答案嗎?如有多解則輸出字典序最小的那個。無解輸出-1

。輸入格式

第一行四個整數n, m, p, q,意義如上描述。 接下來n行,每一行m個字元』n』或』y』,表示這題這個神犇的答案。

輸出格式

僅一行,乙個長度為m的字串或是-1

。樣例一

input22

20yyyy

output

yy限制與約定

對於30%的資料,n≤100n≤100

對於60%的資料,n≤5000,m≤100n≤5000,m≤100

對於100%的資料,1≤n≤30000,1≤m≤500,0≤p,q且p+q≤n1≤n≤30000,1≤m≤500,0≤p,q且p+q≤n

時間限制:1s1s

空間限制:256mb

t這道題是個毒瘤!!,我差不多卡了一天

首先掛乙個雙模掛鏈hs+自然溢位(其實單模也能過,但是聯絡下雙模)

1

struct edgeo[n];

2struct

double_hashset35

void insert(int

from,intt)6

11int find(int

from,int

t)12

18 }map;

相當於手寫了個map(其實並不是,map底層是紅黑樹,複雜得多qaq)

然後考慮這道題

這道題的思路就是

先將名字按字典序排一遍,然後列舉每乙個人,假如第乙個人的答案就是正確答案,看全對的等不等於p,然後看第乙個人的反有幾個,就是看有幾個人爆零了,看是不是q

如果是直接輸出

然後資料很毒瘤

會有p==0的點,這時候沒有人全對,那麼我們就只能列舉每個人,然後假如這個人爆零了,然後看這個人的答案是不是出現q次,再看全對的是不是0個(我就是弄反了卡了好久)

然後更毒的是p==0,q==0的點,這就更噁心,我的方法是搜尋,到每個地方都y或者n往下搜,到最後一層就驗證,注意先搜y再搜n,否則會字典序不是最優而且y和n都要算!!(這個地方我又卡了好久)

最後附乙個字典序比較公升級版

1bool

cmp(input a,input b)

2 這樣就ok,之前我寫麻煩了

注意取得模要開大一些

附**

1 #include2

#define mod1 100003

3#define mod2 23333333333333333

4#define ull unsigned long long

5#define seed1 13131

6#define seed2 131

7#define n 30011

8using

namespace

std;

9int

n,m,p,q;

10char

sou[n];

11ull val1[n],val2[n],fan1[n],fan2[n];

12struct inputin

[n];

13int head[mod1+100

],i;

14bool yeah=0;15

struct edgeo[n];

16struct

double_hashset

1719

void insert(int

from,int

t)20

25int find(int

from,int

t)26

32}map;

33bool

cmp(input a,input b)

34 35 inline void

init()

36else

4852}53

map.insert(val1[i],val2[i]);54}

55}56void dfs(int

dep)

57else

7276}77

if(map.find(m1,m2)==0 && map.find(f1,f2)==0 && yeah==0

)78 79}

80 sou[dep]='y'

;81if(dep!=m)dfs(dep+1

);82

if(dep==m)

83else

9498}99

if(map.find(m1,m2)==0 && map.find(f1,f2)==0 && yeah==0

)100

101}

102}

103int

main()

104else

if(p==0 && q!=0

)117

printf("

\n");return0;

128}

129}

130 }else

131136

}

137}

138 puts("-1"

);139

return0;

140 }

字串雜湊(自然溢位模板)

如題,給定n個字串 第i個字串長度為mi,字串內包含數字 大小寫字母,大小寫敏感 請求出n個字串中共有多少個不同的字串。輸入格式 第一行包含乙個整數n,為字串的個數。接下來n行每行包含乙個字串,為所提供的字串。輸出格式 輸出包含一行,包含乙個整數,為不同的字串個數。輸入樣例 1 5 abcaaaa ...

RY哥查字典(字串雙模hash初步)

題目描述 ry哥最近新買了一本字典,他十分高興,因為這上面的單詞都十分的和諧,他天天查字典。輸入描述 1個整數n,表示字典裡面的單詞數量。接下來n行,每行乙個字串,表示乙個單詞。然後第n 2行,乙個整數m,表示要查的單詞數。接下來m行,每行乙個字串,表示乙個要查的單詞。輸出描述 對於每乙個要查的單詞...

建議1 正確操作字串

建議1 正確操作字串 字串應該是所有程式語言中使用最頻繁的一種基礎資料型別。如果使用不慎,我們就會為一次字串的操作所帶來的額外效能開銷而付出代價。本條建議將從兩個方面來 如何規避這類效能開銷 先來介紹第乙個方面,請看下面的兩行 string str1 str1 9 string str2 str2 ...