• nyoj 138 找球号(二)(哈希)


    题目:nyoj——138

    /***
    哈希求解。。。采用链表保存
    插入时,可以去除重复
    查找 找到该组,然后在改组的查找
    当这个组不存在时或是没有找到时是 NO  其他是YES
    1e6+1 时间最短
    */
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #define N 1000001;
    
    typedef struct numb
    {
        int a;
        numb *next;
    }numb;
    
    
    numb *head[1000005];
    
    void insert(int x)
    {
        int ans = x % N;
        if(head[ans] == NULL)
        {
            head[ans] = (numb *) malloc(sizeof(numb));
            head[ans]->next = NULL;
            head[ans]->a = -1;
        }
    
        numb *p;
        p = head[ans];
        int flag = 1;
        while(p->next != NULL)
        {
            if(p->next->a == x)
            {
                flag = 0;
                break;
            }
            p = p ->next;
        }
        numb *q;
        if(flag)
        {
            q = (numb *) malloc (sizeof(numb));
            q -> a = x;
            q->next = NULL;
            p->next = q;
            p = q;
        }
    }
    
    int find(int x)
    {
        int ans = x % N;
        numb *p;
        if(head[ans] == NULL)
            return 0;
        else
        {
            p = head[ans]->next;
            while(p != NULL)
            {
                if(p->a == x)
                    return 1;
                p = p->next;
            }
            return 0;
        }
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        char ch[12];
        int x,t;
        while(T--)
        {
         scanf("%s",ch);
         if(ch[0] == 'A')
            {
                scanf("%d",&t);
                while(t--)
                {
                    scanf("%d",&x);
                    insert(x);
                }
            }
        else
        {
            scanf("%d",&t);
                while(t--)
                {
                    scanf("%d",&x);
                    if(find(x) == 1)
                        printf("YES
    ");
                    else
                        printf("NO
    ");
                }
        }
        }
        return 0;
    }
    
  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    netty中Pipeline的ChannelHandler执行顺序案例详解
    Pi-设置无线
    Pi1-Centos
    gitlab升级
    ansible
    我也玩Jenkins
  • 原文地址:https://www.cnblogs.com/yyroom/p/3271959.html
Copyright © 2020-2023  润新知