zoukankan      html  css  js  c++  java
  • cdoj 1092 韩爷的梦

    http://acm.uestc.edu.cn/#/problem/show/1092

    题意:略

    思路:

    做的第一道字符串hash的题,真是菜啊,还是看了几篇题解才会做的。字符串hash感觉就是函数的选取和改变模数和基数使得冲突消失,这题嘛,就是wa了就换一组模数和基数。

    实际上也不是很懂。就是算出每一个字符串的hash值,然后将其保存,最后sort一下,统计其中不同元素的个数。

    p = 1e6 + 7;
    mod = 1e9 + 9;
    这对组合就过了,但是数组没有下标越界也很迷啊。
    代码:
     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <algorithm>
     4 using namespace std;
     5 
     6 int a[200005];
     7 int mp[200];
     8 
     9 const int p = 1e6 + 7;
    10 const int mod = 1e9 + 9;
    11 
    12 int myhash(char *s)
    13 {
    14     unsigned long long h = 0;
    15 
    16     for (;*s;s++)
    17     {
    18         h = (h * p + mp[(int)(*s)]) % mod;
    19     }
    20 
    21     return h;
    22 }
    23 
    24 int main()
    25 {
    26 
    27     int cnt = 0;
    28 
    29     for (int i = 'a';i <= 'z';i++)
    30     {
    31         mp[i] = cnt++;
    32     }
    33 
    34     for (int i = '0';i <= '9';i++)
    35         mp[i] = cnt++;
    36 
    37     for (int i = 'A';i <= 'Z';i++)
    38         mp[i] = cnt++;
    39 
    40     for (int i = 0;i < 20000;i++)
    41     {
    42         char s[105];
    43 
    44         scanf("%s",s);
    45 
    46         a[i] = myhash(s);
    47     }
    48 
    49     sort(a,a+20000);
    50 
    51     int num = 0,su = -1;
    52 
    53     for (int i = 0;i < 20000;i++)
    54     {
    55         if (su != a[i])
    56         {
    57             su = a[i];
    58             num++;
    59         }
    60     }
    61 
    62     printf("%d
    ",num);
    63 
    64     return 0;
    65 }
  • 相关阅读:
    MySQL的sql_mode合理设置
    Redis
    启动Jupyter Notebook提示ImportError: DLL load failed: 找不到指定的模块。
    Linux目录结构
    修改mysql密码报错: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
    springmvc运行原理
    博客园美化
    数据搜索
    git
    window
  • 原文地址:https://www.cnblogs.com/kickit/p/7237775.html
Copyright © 2011-2022 走看看