中大周賽第7場 HASH 簡單題

2022-08-22 04:48:13 字數 1148 閱讀 7839

description

input

on the first line one positive number: the number of test cases, at most 100. after that per test case:

output

per test case:

sample input

2

3hat headgear

sunglasses eyewear

turban headgear

3mask face

sunglasses face

makeup face

sample output

5

3不管前面的名字,直接記錄後面每種型別的個數就好了,

對於每種型別i,有a[i]個,則有a[i]+1種選擇,拿其中乙個或者不拿,

所以一共有sum=(a[i]+1)的乘積再減去1,因為有一種情況是所有的都不拿,不符合要求。

初始化:a初始化為0

然後題目每給出一種型別,我們就在 a[該型別]++

而型別給我們的是字串,所以要hash。

注意,hash的時候取余時的mod要大一點,不然很可能會重複。

1 #include2 #include3

using

namespace

std;45

const

int maxn=3500;6

7 unsigned int bkdrhash(char*s)815

return (hash%maxn); //

題目這裡最大的n是30,但是wa了,因為mod開小了可能會重複16}

1718

int a[maxn+5

];19

20int

main()

2136

int sum=1;37

for(int i=0;i5;i++)

3841 sum--;

42 cout

44return0;

45 }

view code

第123場周賽

1,989.陣列形式的整數加法 方法一 逐位相加 思路 讓我們逐位將數字加在一起。舉乙個例子,如果要計算 123 與 912 的和。我們順次計算 3 2 2 1 1 9。任何時候,當加法的結果大於等於 10 我們要將進製的 1 加入下一位的計算中去,所以最終結果等於 1035。演算法 我們可以對以上...

第191場周賽

class solution return res 這裡有個注意的點,maxh maxw這兩個int的值的乘積會超過int的範圍,所以要先轉換為double class solution maxh maxh h horizontalcuts hcut 1 maxh h horizontalcuts ...

第193場周賽

class solution return res class solution map maps new treemap int len arr.length int max 1 for int i 0 i else int totoalnum maps.size arraylist sorted...