zoukankan      html  css  js  c++  java
  • 散列+哈希

    散列法:

    #include <cstdio>
    #include <iostream>
    #include <string.h>
    using namespace std;
    const int N = 100010, null = 0x3f3f3f3f;
    int h[N], e[N], ne[N], idx;
    void insert(int x)
    {
        int k = (x % N + N) % N;
        e[idx] = x;
        ne[idx] = h[k];
        h[k] = idx++;
    }
    bool find(int x)//拉链法
    {
        int k = (x % N + N) % N;
        for(int i = h[k];i != -1;i = ne[i])
            if(e[i] == x)
                return true;
        return false;
    }
    int find1(int x) //开放寻址法
    {
        int k = (x % N + N) % N;
        while(h[k] != null && h[k] != x)
        {
            k++;
            if(k == N) k = 0;
        }
        return k;
    }
    int main()
    {
        int n;
        cin>>n;
        memset(h, -1, sizeof h);
        while(n--)
        {
            char op;
            int x;
            cin>>op>>x;
            if(op == 'I')
                insert(x);
            else{
                if(find(x)) puts("Yes");
                else puts("No");
            }
        }
    }

    字符串哈希:

    #include <cstdio>
    #include <iostream>
    #include <string.h>
    using namespace std;
    typedef unsigned long long  ULL;
    const int N = 100010, P = 131;
    int n,m;
    char str[N];
    ULL h[N], p[N];
    ULL get(int l, int r)
    {
        return h[r] - h[l - 1] * p[r-l+1];
    }
    int main()
    {
        cin>>n>>m>>str+1;
        p[0] = 1;
        for(int i = 1;i<=n;i++)
        {
            p[i] = p[i-1] * P;
            h[i] = h[i-1] * P + str[i];
        }
        while(m--)
        {
            int l1,r1,l2,r2;
            cin>>l1>>r1>>l2>>r2;
            if(get(l1,r1) == get(l2,r2)) puts("Yes");
            else puts("No");
        }
    }

  • 相关阅读:
    解决sqlite3 dos下显示中文乱码
    毕业两年
    成就感
    重构html的下拉框select
    ie6 select不兼容处理(转)
    全选删除确认改进
    GridView移动行变色
    gridview固定列的宽度并且能换行
    分页控件结合分页存储过程
    网页滚动条向下拉动奇慢的原因
  • 原文地址:https://www.cnblogs.com/longxue1991/p/12695100.html
Copyright © 2011-2022 走看看