几道hash题
1:
UVa 10887 - Concatenation of Languages
map 可以做 ,但是输入实在恶心,有空串之类的HASH模板:
int Hash(char *s)
{
int seed=131,sum=0;
while (*s)
sum=sum*seed+(*s++);
return (sum&0x7FFFFFFF)%N;
}
void hash_insert(int s)
{
int h=Hash(c[s]);
int u=head[h];
while (u)
{
if (!strcmp(c[s],c[u]))
{
return;
}
u=next[u];
}
next[s]=head[h];
head[h]=s;
++ans;
}虽然简单,但是要灵活用好也比较费力。
UVA :Matrix Matcher
一般 矩阵 串里面找存在目标字串 多少次 的hash写法。
虽然 自然溢出的算法会碰撞的几率很小,但是还是有的,所以这是你没想到 更好的解法的时候碰一下运气的做法。
不过 碰撞的几率 很小。
- ull p=;
- for (int i=;i<x;i++)
- {
- ull tmp=;
- for (int j=;j<y;j++)
- tmp=tmp*B1+s1[i][j];
- p=p*B2+tmp;
- }
- ull t=;
- int ans=;
- for (int i=;i<y;i++) t*=B1;
- for (int i=;i<n;i++)
- {
- ull a=;
- for (int j=;j<y;j++) a=a*B1+s[i][j];
- mp[i][y-]=a;
- for (int j=y;j<=m;j++)
- mp[i][j]=mp[i][j-]*B1-s[i][j-y]*t+s[i][j];
- }
- t=;
- for (int i=;i<x;i++) t*=B2;
- for (int i=y-;i<=m;i++)
- {
- ull tmp=;
- for (int j=;j<x;j++) tmp=tmp*B2+mp[j][i];
- mpp[x-][i]=tmp;
- if (tmp==p) ans++;
- for (int j=x;j<n;j++)
- {
- mpp[j][i]=mpp[j-][i]*B2-mp[j-x][i]*t+mp[j][i];
- if (mpp[j][i]==p) ans++;
- }
几道hash题的更多相关文章
- [2]十道算法题【Java实现】
前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- 关于SQL的几道小题详解
关于SQL的几道小题详解 当我们拿到题目的时候,并不是急于作答,那样会得不偿失的,而是分析思路,采用什么方法,达到什么目的,还要思考有没有简单的方法或者通用的方法等等,这样才会达到以一当十的效果,这样 ...
- POJ-1200 Crazy Search,人生第一道hash题!
Crazy Search 真是不容易啊,人生第一道hash题竟然是搜博客看题解来的. 题意:给你 ...
- CF上的3道小题(2)
CF上的3道小题(2) T1:CF630K Indivisibility 题意:给出一个数n,求1到n的数中不能被2到9中任意一个数整除的数. 分析:容斥一下,没了. 代码: #include < ...
- CF上的3道小题(1)
CF上的3道小题 终于调完了啊.... T1:CF702E Analysis of Pathes in Functional Graph 题意:你获得了一个n个点有向图,每个点只有一条出边.第i个点的 ...
- 各位大佬Python的第一部分道基础题已经整理好了,希望大家面试的时候能用的上。
Python的第一部分道基础题,希望大家面试的时候能用的上. 1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途 ...
- java基础50道编程题
50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析 ...
- 【IT公司笔试面试】75道逻辑推理题及答案
[1]假设有一个池塘,里面有无穷多的水.现有2个空水壶,容积分别为5升和6升.问题是如何只用这2个水壶从池塘里取得3升的水. 由满6向空5倒,剩1升,把这1升倒5里,然后6剩满,倒5里面,由于5里面有 ...
随机推荐
- phpstorm中快速添加函数注释
Preferences 或 command+,快捷键 Live Templates - PHP 下方 - 新建模板 ,Abbreviation 命名随便写,点击Edit Variables配置变量信息 ...
- Selenium私房菜系列1 -- Selenium简介
一.Selenium是什么? Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,本系列现在主要包括以下4款: 1.Selenium Core:支持DHTML的测试案 ...
- qt5.8使用qwebenginview注意事项
环境qt5.8,vs2015(ui.webview必须要先show出来,不然加载不成功) 1.项目属性,c/c++,常规,附加包含目录,新增: $(QTDIR)\include\QtWebChanne ...
- 如何在一次请求中通过JS中获取Url中的参数
从A跳转到B,携带参数 例如: /pc/B.jsp?item=123456 B页面在js可以直接用 var item='${param.item}'; 这样就拿到啦 还有一种方法 定义一个函数 f ...
- android 解密工具
androguard. 这个是python写的 安装: pip install androguard
- sql is null
select * from a or state is null)
- HTML基础(三)图像和超链接
图像 img 元素向网页中嵌入一幅图像. 语法 <img src="" alt="" /> img标签常用属性 src 跳转的url alt 图片不 ...
- FastDFS和集中存储方式对比
指标 FastDFS NFS 集中存储设备如NetApp.NAS 线性扩容性 高 差 差 文件高并发访问性能 高 差 一般 文件访问方式 专有API POSIX 支持POSIX 硬件成 ...
- js 上传头像img
<label> <div class="myusercenter-image-none"> <img src="" class=& ...
- 牛客网练习赛25 C 再编号
链接:https://www.nowcoder.com/acm/contest/158/C来源:牛客网 定义对 a 的再编号为 a' ,满足 . 现在有 m 次询问,每次给定 x,t ,表示询问经过 ...