zoukankan      html  css  js  c++  java
  • #10034.「一本通 2.1 例 2」图书管理哈希(双哈希思想)+邻接表

     

    样例

    样例输入

    4
    add Inside C#
    find Effective Java
    add Effective Java
    find Effective Java
    

    样例输出

    no
    yes
    

    数据范围与提示

    n<=30000

     1 #include<stdio.h>
     2 #include<algorithm>
     3 #include<iostream>
     4 #include<string.h>
     5 using namespace std;
     6 typedef long long ll;
     7 const int mod1=1e6+3,mod2=1e6+9,p1=47,p2=79,N=30020;
     8 int k,to[N],endd[N];
     9 int first[mod1+20];//注意poi数组开的大小范围,不是N
    10 char a[10],b[220];
    11 
    12 void add(int x,int y)//邻接表实现该操作
    13 {
    14     to[k]=first[x];
    15     first[x]=k;
    16     endd[k]=y;
    17     k++;
    18 }
    19 
    20 int query(int x,int y)
    21 {
    22     for(int i=first[x]; i!=-1; i=to[i])
    23     {
    24         if(endd[i]==y)
    25             return 1;//该字符串找到了
    26     }
    27     return 0;
    28 }
    29 
    30 int main()
    31 {
    32     int t;
    33     scanf("%d",&t);
    34     memset(to,-1,sizeof(to));//最好用-1进行清空,因为有时侯点会从0开始,会导致多存
    35     k=1;//k最好是从1开始存,否则容易出错
    36     while(t--)
    37     {
    38             scanf("%s",a);
    39         gets(b);
    40         int lb=strlen(b);
    41         int sum1=0,sum2=0;
    42         for(int i=0; i<lb; i++) //计算出每个书名的哈希值
    43         {
    44             //双哈希思想,减小误差
    45             sum1=(sum1*p1+b[i])%mod1;
    46             sum2=(sum2*p2+b[i])%mod2;
    47         }
    48         if(strcmp(a,"add")==0)//add操作,该操作单向即可,不需要add(sum2,sum1)
    49             add(sum1,sum2);
    50         else //寻找是否出现过该书
    51         {
    52             int w=query(sum1,sum2);
    53             if(w)
    54                 printf("yes\n");
    55             else
    56                 printf("no\n");
    57         }
    58     }
    59     return 0;
    60 }
  • 相关阅读:
    vmware12中安装MAC OS X 10.10
    AOL search
    [python]错误检测及异常处理try-except
    [推荐]
    [python]打开文件操作open用法
    MAC使用小技巧
    [推荐]
    [python]python中的if, while, for
    [python]python字典
    [python]python列表、元组
  • 原文地址:https://www.cnblogs.com/OFSHK/p/11703665.html
Copyright © 2011-2022 走看看