rt.
雜湊,用於處理一些大值統計方面問題,它的下位是堆排?(c,不存在下位的),當數值特別大的時候,堆的陣列就會炸掉。於是雜湊將這些特別大的數除上乙個質數,得到乙個位置存這個特別大的數。(然後就正常用,每次就找到這個得出的位置)由於除的是質數,所以一般情況,不同的數得到的位置是不會衝突的。如果衝突了,那麼就存的這個位置的後面,或者往後找乙個新的位置存下來。
這題要我們求n個字串中不重複的有多少,那麼我們就每讀入乙個字串,就將它用乙個規則轉換成數碼,然後%p,得到位置存下來。不同位置存的字串都是不一樣噠,如果位置一樣而不同的話,如上處理。這樣我們就可以較少次數地找到相同的字串,得到答案。
**如下。
#include
#include
#include
using
namespace std;
intconst p=
49999
;//這是乙個質數。
string s[
50001][
5],s;int t[
50001
],n,l,pd,ans;
intmain()
if(pd ==0)
}printf
("%d"
,ans)
;}
洛谷P3370 模板 字串雜湊
傳送門 如題,給定 n nn 個字串 第 i ii 個字串長度為 m im i mi 字串內包含數字 大小寫字母,大小寫敏感 請求出 nn 個字串中共有多少個不同的字串。輸入格式 第一行包含乙個整數 n nn,為字串的個數。接下來 n nn 行每行包含乙個字串,為所提供的字串。輸出格式 輸出包含一行...
洛谷 P3370 模板 字串雜湊
如題,給定 n 個字串 第 i 個字串長度為 m i 字串內包含數字 大小寫字母,大小寫敏感 請求出 n 個字串中共有多少個不同的字串。第一行包含乙個整數 n 為字串的個數。接下來 n 行每行包含乙個字串,為所提供的字串。輸出包含一行,包含乙個整數,為不同的字串個數。輸入 15 abcaaaa ab...
洛谷 P3370 模板 字串雜湊 如題
如題,給定n個字串 第i個字串長度為mi,字串內包含數字 大小寫字母,大小寫敏感 請求出n個字串中共有多少個不同的字串。輸入格式 第一行包含乙個整數n,為字串的個數。接下來n行每行包含乙個字串,為所提供的字串。輸出格式 輸出包含一行,包含乙個整數,為不同的字串個數。輸入樣例 1 5 abcaaaa ...