zoukankan      html  css  js  c++  java
  • POJ2549【hash分离链接法】

    题意:
    给n个不同的数,求一个4个数(a,b,c,d)的组合满足a+b+c=d;求最大的d。
    思路:
    没想到可以用hash搞/
    这个就是数据结构里的分离链接法~
    解决hash冲突的方法:将所有关键字为同义词的结点链接在同一单链表中。
    a+b+c=d转化成a+b=d-c;
    先将所有的a+b hash掉。
    然后用 d-c 去找。

    复杂度n^2*HASH;

    #include<cstdio>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    const int mod=5e5+10;
    const int N=5e5+10;
    struct Node{
        int x,y;
    };
    Node q[N];
    int Ha[mod],nex[mod],s[1010],res,n;
    bool flag;
    void solve(int x,int y)
    {
        int key=(x-y+mod)%mod;
        int i=Ha[key];
        while(i!=-1)
        {
            while((q[i].x+q[i].y)==(x-y)&&q[i].x!=x&&q[i].x!=y&&q[i].y!=y&&q[i].y!=x)
            {
                res=x;
                flag=true;
                return;
            }
            i=nex[i];
        }
    }
    int main()
    {
        while(scanf("%d",&n)&&n)
        {
            for(int i=0;i<n;i++) scanf("%d",&s[i]);
            int tot=0;
            sort(s,s+n);
            memset(Ha,-1,sizeof(Ha));
            for(int i=0;i<n-1;i++)
                for(int j=i+1;j<n;j++)
                {
                    q[tot].x=s[j];q[tot].y=s[i];
                    int key=(s[i]+s[j]+mod)%mod;
                    nex[tot]=Ha[key];
                    Ha[key]=tot;
                    tot++;
                }
            res=-1000000000;
            flag=false;
            for(int i=n-1;i>=1;i--)
                for(int j=i-1;j>=0;j--)
                {
                    if(flag) break;
                    solve(s[i],s[j]);
                }
            if(res!=-1000000000)
                printf("%d
    ",res);
            else
                puts("no solution");
        }
        return 0;
    }
    
    



  • 相关阅读:
    跟风!发一篇我常用VS开发技巧
    引用:程序员最常犯的五大非技术性错误
    Introduction to the Oracle Database 3
    Oracle Database 12c 12大新特性详解
    Streams全库复制
    Introduction to the Oracle Database 2
    Oracle FlashBack
    Oracle Database Features 2
    Oracle Database Features
    TNSName配置小结
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777394.html
Copyright © 2011-2022 走看看