HDU 4080 字串雜湊 二分

2021-08-08 07:30:11 字數 695 閱讀 2139

找到乙個字串中出現超過m次的最長的子串,以及該子串最有出現的起點。如果有多個相同的就選擇最右端出現的。

二分長度,然後雜湊統計子串出現次數。

#include 

using

namespace

std;

typedef

unsigned

long

long ull;

const ull seed = 229;

const

int maxn = 4e4 + 10;

char s[maxn];

ull sum[maxn], f[maxn];

mapint> mp;

mapint> :: iterator it;

int ans, m, n, pos, anspos;

void init()

bool check(int xx)

}return flag;

}void solve(int l, int r)

else r = mid - 1;

}if (ans == -1) puts("none");

else

printf("%d %d\n", ans, anspos);

}int main()

return

0;}

POJ 2774 字串雜湊 二分

題意 給出s,t兩個字串,求最長公共子串的長度 思路 首先二分答案x,預處理出s中長度為x的子串雜湊值並排序,在t中列舉起點,二分查詢t i.i x 的雜湊值 二分查詢直接用binary search 函式 複雜度其實是nlog方 1 include2 include3 include4 inclu...

hdu2920 字串雜湊

模式串中 把它分成一截截,當某一截在s串中多個位置能找到匹配,找第乙個匹配點,貪心 因為當中間有 可以利用它跳過一些字元,當遇到 先跳過乙個字元,其他的一截截貪心去找到匹配位置,若最後剩餘偶數個字元,則match 第一截和最後一截如果是非 和 必須嚴格匹配 找來的雜湊寫法 include inclu...

HDU 1800 字串雜湊

從n個數中,最少能分出幾個單調遞增序列。水題。就是找到n個數中出現次數最多的次數。只是n個數範圍有30個十進位制位,需要當成字串處理,這就用到了字串雜湊。include using namespace std const int maxn 3005 const int mod 100007 stru...