Crazy Search 【POJ - 1200】【哈希】

2023-11-03

题目链接

题意:

给定一个字符串,其中含有不同的字母数量为m,现在求这个字符串中有多少个长度为n且长的互不相同的字符子串 
举个例子, n=3, m=4 ,字符串 "daababac". 长度为3的不同的子串分别是: "daa"; "aab"; "aba"; "bab"; "bac". 因此, 答案是5. 

思路:

这里没有给N、M的范围,但是要知道字符串的数量最多是255(还不知是256),所以我们开了个300的数组记录对应字符的相应哈希值,然后我们去遍历这样的字符,暴力就是了,每次查询其1~N的字符是否对应的哈希值出现过,没有就记录下来,这里用不了set,会超时。。。

 

完整代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int maxN=1e6+5;
int N, M;
char s[maxN];
int tot, mp[300], sum;
bool vis[16000005];
void init()
{
    memset(vis, false, sizeof(vis));
    memset(mp, 0, sizeof(mp));
}
int main()
{
    while(scanf("%d%d", &N, &M)!=EOF)
    {
        init();
        getchar();
        scanf("%s", s);
        int len=(int)strlen(s);
        if(len<N) { printf("0\n"); continue; }
        for(int i=0; i<len; i++)
        {
            if(!mp[s[i]]) mp[s[i]]=++tot;
            if(tot==M) break;
        }
        int ans=0;
        for(int i=0; i+N<=len; i++)
        {
            sum=0;
            for(int j=0; j<N; j++)
            {
                sum=sum*M+mp[s[i+j]]-1;
            }
            if(!vis[sum])
            {
                vis[sum]=true;
                ans++;
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Crazy Search 【POJ - 1200】【哈希】 的相关文章

  • [SDOI2007]游戏【哈希+DAG拓扑】

    题目链接 先通过哈希确定点 这里我使用的是双值哈希 然后利用哈希判断可以和前面的出现的点如何链接 之后构造出来的图一定是一副DAG图 有向无环图 所以直接拓扑排序DP即可 include
  • 1. 两数之和 C++

    给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 target 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素在答案里不能重复出现 你可以按任意顺
  • 树的遍历(bfs+递归)

    题目描述 一个二叉树 树中每个节点的权值互不相同 现在给出它的后序遍历和中序遍历 请你输出它的层序遍历 输入描述 第一行包含整数 N 表示二叉树的节点数 第二行包含 N 个整数 表示二叉树的后序遍历 第三行包含 N个整数 表示二叉树的中序遍
  • 哈希表 基础理论

    目录 哈希表中的常见概念 哈希函数常见的构建方式 哈希算法 解析哈希冲突的常见方式 hash 哈希 有的也翻译为散列 哈希表通常基于数组实现 元素存取效率高 java中常见的hash集合都是使用哈希表来存储元素 map HashMap Li
  • 你了解这些算法吗?SHA256、RIPEMD-160、DES、AES、RSA、ECC

    一 HASH算法 哈希散列算法和哈希摘要算法都叫做哈希算法 1 概念 把一段任意长度的数据变成均匀分布固定长度的数据 反之不可以 Hash不可逆 在任何电脑 手机 或者笔算Hash值都是一样的 y Hash x 已知x可以得到y 反之不可以
  • Windows的密码生成算法——NTLM算法破解

    文章目录 方法一 Python代码暴力破解 方法二 hashcat工具破解 NTLM CDABE1D16CE42A13B8A9982888F3E3BE hint 密码长度不超过5 数字和符号组成 Windows下NTLM Hash生成原理
  • Crazy Search 【POJ - 1200】【哈希】

    题目链接 题意 给定一个字符串 其中含有不同的字母数量为m 现在求这个字符串中有多少个长度为n且长的互不相同的字符子串 举个例子 n 3 m 4 字符串 daababac 长度为3的不同的子串分别是 daa aab aba bab bac
  • 第四讲. 经典算法之哈希映射

    第四讲 经典算法之哈希映射 1 简介 2 从一个简单例题开始 3 哈希中的碰撞冲突 3 1 线性探测法 3 2 链地址法 3 3 再哈希法 3 4 4 哈希函数的设计 4 1 更大的哈希表 4 2 更好的哈希运算 5 最后说几句 1 简介
  • 哈希学习简介

    一 背景介绍 1 首先介绍一下最近邻搜索 最近邻搜索问题 也叫相似性搜索 近似搜索 是从给定数据库中找到里查询点最近的点集的问题 给定一个点集 以及一个查询点q 需要找到离q最近的点的集合 在大规模高维度空间的情况下 这个问题就变得非常难
  • 2021-05-28

    什么是散列表 散列表 散列表 Hash table 也叫哈希表 是根据键 Key 而直接访问在内存存储位置的数据结构 也就是说 它通过计算一个关于键值的函数 将所需查询的数据映射到表中一个位置来访问记录 这加快了查找速度 这个映射函数称做散
  • 哈希表冲突及处理冲突的方法(含例子)

    一 哈希函数和哈希冲突的基本概念 1 哈希函数 哈希法又称散列法 杂凑法以及关键字地址计算法等 相应的表成为哈希表 基本思想 首先在元素的关键字K和元素的位置P之间建立一个对应关系f 使得P f K 其中f成为哈希函数 创建哈希表时 把关键
  • unordered_map的哈希HASH重载——举例unordered_map与pair联合使用

    有些时候 为了图省力 我们没准会这样的调用一个函数 unordered map lt pair
  • 哈希(4) - 求两个链表的交集以及并集

    目录 1 简单方法 2 使用归并排序 3 使用哈希 给定两个链表 求它们的交集 intersection 以及并集 union 用于输出的list中的元素顺序可不予考虑 例子 输入下面两个链表 list1 10 gt 15 gt 4 gt
  • Tree-String Problem 【CodeForces - 291E】【倍增(LCA)+哈希】

    题目链接 题意 给你N个点的树 树上的边的权值是一个自上往下的字符串 然后我们再给出一个字符串 是模式串 我们现在想知道模式串在树上的出现次数 譬如说样例 我们查找的是aba 它在1 4这条链上出现了2次 在1 5上出现1次 在2 3上出现
  • ​LeetCode刷题实战267:回文排列II

    算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家做一道算法题 题目就从LeetCode上面选 今天和大家聊的问题叫做 回文排列II 我们先来看题面
  • Supermarket 【POJ - 1456】【并查集+哈希表思想+贪心】

    题目链接 原来 并查集还有这样的作用 题记 我想用个哈希表的思维来解这道题 但是 显然O N 2 的哈希表去查询并插入显然是不行的 那么既然挂在图论专题 我就得用相应的方式解答咯 要是不挂在图论专题 我可能会自闭了 我们对于每个物品按照价值
  • ​LeetCode刷题实战33:搜索旋转排序数组

    来源 https www cnblogs com techflow p 12441002 html 算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家
  • Java实现哈希函数/散列算法

    哈希函数 散列算法 根据某个值进行hash值计算 确保唯一性 public class HashUtils private static final String ALGORITHM SHA 256 public static String
  • Oulipo 【HDU - 1686】【哈希

    题目链接 求模式串在待匹配串的出现次数 Input 第一行是一个数字T 表明测试数据组数 之后每组数据都有两行 第一行为模式串 长度不大于10000 第二行为待匹配串 长度不大于1000000 所有字符串只由大写字母组成 Output 每组
  • HashMap中为何X % length = X & (length - 1)(求余%和与运算&转换问题)

    目录 一 引出问题 二 结论 三 分析过程 总结 一 引出问题 在前面讲解 HashMap 的源码实现时 有如下几点 初始容量为 1 lt lt 4 也就是24 16 负载因子是0 75 当存入HashMap的元素占比超过整个容量的75 时

随机推荐

  • 学习开源项目Halo(一)

    Halo是一款现代化的个人博客系统 我们可以去它的github主页上使用git给拉取下来 别说不会git啊 身为一个自学的困难户 自学能力是必须的 找个教程照着做就成了 目前最新的版本是v1 1 1 使用的是gradle构建的项目 身为菜鸡
  • Mockito when函数实现方式

    平时写单测时 对于一些有限制或因当前环境无法访问的接口时 需要用到Mock来为目标接口添加自定义的实现 使其表现出我们希望表现的逻辑 从而不影响单元测试的实现 Mockito是常用的一个类库 使用也比较简单 使用分为注解的方式和直接创建对象
  • docker安装笔记-windows

    docker安装笔记 windows 菜鸟教程 https www runoob com docker windows docker install html 旧版 WSL 的手动安装步骤 https docs microsoft com
  • 关于我不“小心点”开我爸浏览器搜索历史这件事

    今天早上为了给我的小可爱发信息 我拼尽了全身力气使劲刷微信聊天记录 结果把自己的手机电耗尽了 不点破我要用手机做啥 反正不小心背下了老爸的手机查资料 没想到他的浏览器记录还藏着这么多 宝贵 的信息 哈哈哈哈哈 都是些令人大开眼界的东西 我发
  • 【Visual Studio 2019】 实用调试技巧,学会了都说好

    文章目录 前言 一 bug是什么 二 调试是什么 三 调试的基本步骤 四 Debug和Release的介绍 五 windows环境调试介绍 1 调试环境的准备 2 常用快捷键 六 调试的时候查看程序当前信息 1 调试实例 七 如何写出好 易
  • STM32建立工程模板时出现错误:error: #67: expected a “}“

    在MDK5开发环境中使用到标准库建立工程时 常常会出现以下编辑错误error 67 expected a 更改方法 options gt c c gt Preprocessor Symbols gt Define 将STM32F10X MD
  • JAVA-jdk8的API文件下载

    API文件 1 在线API 2 离线API 1 在线API 在线中文API文档 https www matools com api java8 2 离线API API下载地址 https www oracle com java techno
  • windows 系统 cmake 编译 python 使用 boost 库的问题

    使用 cmake 编译跨平台的开源框架 遇到 cmake 编译出错 主要报错是 FindBoost cmake 通过各种输入日志 message 发现有几个地方需要注意 现记录下来 需要修改成自己的boost版本 set RDK BOOST
  • 华为OD机试真题 Java 实现【分界线】【2023Q1 100分】

    一 题目描述 电视剧 分界线 里面有一个片段 男主为了向警察透露案件细节 且不暴露自己 于是将报刊上的字剪切下来 剪拼成匿名信 现在有一名举报人 希望借鉴这种手段 使用英文报刊完成举报操作 但为了增加文章的混淆度 只需满足每个单词中字母数量
  • API 网关基础

    目录 一 网关概述 二 网关提供的功能 三 常见网关系统 3 1 Netflix Zuul 3 2 Spring Cloud Gateway 3 3 Kong 3 4 APISIX 3 5 Shenyu 一 网关概述 API网关是一个服务器
  • [微信官方文档] 小程序-错误码信息与解决方案表

    错误码信息与解决方案表 错误码是通过binderror回调获取到的错误信息 代码 异常情况 理由 解决方案 1000 后端错误调用失败 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复 1001 参数错误 使用方法错误 可以前往
  • linux:docker /bin/bash作用

    参考 docker run it centos bin bash 后面的 bin bash的作用
  • 【整理一】

    1 说说你对react的理解 有哪些特性 React是一个前端js框架 React高效灵活 声明式设计 使用简单 组件式开发 提高代码的复用率 单向的数据绑定比双向的数据绑定更加安全 2 说说Real diff算法是怎么运作的 1 Diff
  • CrackQL:一款功能强大的图形化密码爆破和模糊测试工具

    关于CrackQL CrackQL是一款功能强大的图形化密码爆破和模糊测试工具 在该工具的帮助下 广大研究人员可以针对密码安全和应用程序安全进行渗透测试 除此之外 CrackQL同时也是一款通用的GraphQL渗透测试工具 它可以控制速率限
  • 积分图(三) - Boxfilter 的实现过程分析

    积分图 三 Boxfilter 的实现过程分析 Boxfilter 快速计算 它可以使复杂度为O MN 的求和 求方差等运算降低到O 1 或近似于O 1 的复杂度 它的缺点是不支持多尺度 Boxfilter 的原理有点类似 Integral
  • 大学应让我们相信各种可能性

    记得刚来学校的时候 导员们便告诉我们今年的学长学姐们找的工作工资有多高 他们保研保上了多么好的学校 有多少人竞赛怎么样怎么样 于是一开始 我们心中的价值取向便成了这些 而我们竟然还很激动 因为我们将来或许也能取得同样的工资 同样的成就 其实
  • python过期了怎么恢复_pycharm过期30天没法用了怎么办?

    用cleanmyMac查看 右键在finder中显示可以找到文件位置 image png Users xxx Library Saved Application State com jetbrains pycharm savedState
  • STL容器之deque

    文章目录 deque容器简介 deque的操作 deque容器简介 deque是 double ended queue 的缩写 和vector一样都是STL的容器 deque是双端数组 而vector是单端的 deque在接口上和vecto
  • TypeScript中的联合类型、类型别名、接口、类型断言

    一 联合类型 在TypeScript中 联合类型 Union Types 是指用 符号将多个类型组合成一个的类型 这种类型可以包含不同的类型 例如字符串 数字或对象 这些不同类型的值可以赋值给联合类型的变量 而在使用这个变量时 需要对不同类
  • Crazy Search 【POJ - 1200】【哈希】

    题目链接 题意 给定一个字符串 其中含有不同的字母数量为m 现在求这个字符串中有多少个长度为n且长的互不相同的字符子串 举个例子 n 3 m 4 字符串 daababac 长度为3的不同的子串分别是 daa aab aba bab bac