几道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里面有 ...
随机推荐
- LINUX 安装tsung 对OPENFIRE 进行压力测试
参考资料: http://www.centoscn.com/image-text/install/2014/0818/3503.html http://my.oschina.net/jieluck ...
- 迅为iMX6UL Cortex-A7架构单核ARM开发板接口介绍-支持定制
支持商业级和工业级核心板 1. POWER 电源接口电源输入为 5V/2A+,给核心板提供 5V 电源,给底板供电.原理图部分如下图所示. 电源接口位置如下图所示. 2. SWITCH 电源开关轻触电 ...
- Unity3D windows平台视频录制录屏插件 UnityRecorder
例子:从官方例子简单改了 using UnityEditor;using UnityEditor.Recorder;using UnityEditor.Recorder.Input;using Sys ...
- ecpg - 嵌入的 SQL C 预处理器
SYNOPSIS ecpg [ option...] file... DESCRIPTION 描述 ecpg 是一个嵌入的用于C 语言的 SQL 预编译器. 它把嵌有 SQL 语句的 C 程序通过将 ...
- DROP DOMAIN - 删除一个用户定义的域
SYNOPSIS DROP DOMAIN name [, ...] [ CASCADE | RESTRICT ] DESCRIPTION 描述 DROP DOMAIN 将从系统表中删除一个用户域. 只 ...
- css--css选择器,伪类
前戏 前面我们说过CSS规则由选择器和声明组成,我们要给标签设置属性,那我们就要找到对应的标签,CSS选择器可以帮我们找到我们需要的标签 css选择器有: 标签选择器 类选择器 ID选择器 全局选择器 ...
- Spring-1-IOC
IOC与DI的区别? IOC:控制反转(Inversion of Control是面向对象的一种设计原则,可以用来降低计算机之间的耦合度,其中最常见的是依赖注入).是实现的目标 DI:是实现IOC的一 ...
- git命令使用(二)
上次写的git命令,基本上能够支持一个项目的基本运行了,但是git不是就那几个命令还有一些其他的命令,来看一下 创建一个文件夹,想在这个文件夹下创建项目,就执行这个命令就行 $ git init 里面 ...
- [JOYOI] 1124 花店橱窗
题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目背景 xq和他的老婆xz最近开了一家花店,他们准备把店里最好看的花都摆在橱窗里.但是他们 ...
- Solr5.0.0定时更新索引
由于通过配置的方式定时更新不生效,故通过代码执行定时任务更新 package com.thinkgem.jeesite.modules.meeting.task; import java.io.IOE ...