• 密文搜索 (排序预处理+map,string)


    资源限制
    内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s
      福尔摩斯从X星收到一份资料,全部是小写字母组成。
      他的助手提供了另一份资料:许多长度为8的密码列表。
      福尔摩斯发现,这些密码是被打乱后隐藏在先前那份资料中的。
    
      请你编写一个程序,从第一份资料中搜索可能隐藏密码的位置。要考虑密码的所有排列可能性。
    
      数据格式:
    
      输入第一行:一个字符串s,全部由小写字母组成,长度小于1024*1024
      紧接着一行是一个整数n,表示以下有n行密码,1<=n<=1000
      紧接着是n行字符串,都是小写字母组成,长度都为8
    
      要求输出:
      一个整数, 表示每行密码的所有排列在s中匹配次数的总和。
    
      例如:
      用户输入:
      aaaabbbbaabbcccc
      2
      aaaabbbb
      abcabccc
    
      则程序应该输出:
      4
    
      这是因为:第一个密码匹配了3次,第二个密码匹配了1次,一共4次。
    
    
      资源约定:
      峰值内存消耗 < 512M
      CPU消耗 < 3000ms
    
    
      请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
    
      所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    
      注意: main函数需要返回0
      注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
      注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
    
      提交时,注意选择所期望的编译器类型。
    View Problem

    思路:

    • 因为一开始他求的是,字串的所有顺序情况在 目标窜内,因此直接排序预处理解决就行了(自己一开始还傻乎乎的去判断每一个字符时候出现过啥的)
    • 利用map来处理情况
    #include <bits/stdc++.h>
    
    using namespace std;
    
    
    #define ri register int
    #define M 10005
    
    template <class G> void read(G &x)
    {
        x=0;int f=0;char ch=getchar();
        while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();}
        while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
        x=f?-x:x;
        return ;
    }
    
    
    map<string,int>mp;
    int n;
    string s;
    int main(){
        
        cin>>s;
        cin>>n;
        for(ri i=1;i<=n;i++)
        {
            string tmp;
            cin>>tmp;
            sort(tmp.begin(),tmp.end());
            mp[tmp]++;
        }
        long long ans=0;
        for(ri i=0;i<s.length();i++)
        {
            string tmp=s.substr(i,8);
            sort(tmp.begin(),tmp.end());
            if(mp.count(tmp))
            {
                ans+=mp[tmp];
            }
        }
        printf("%lld",ans);
        return 0;
        
        
    }
    View Code

    注意: 蓝桥杯不能使用 unordered map!!!!

  • 相关阅读:
    理解inode
    贝叶斯公式与拼写检查器
    《C程序设计语言》第四章 函数和程序结构
    MIT《计算机科学与编程导论》课堂笔记
    很牛的牛顿迭代法
    开发一个小工具重温C#经典问题
    斯坦福《编程方法学》环境搭建及常见问题
    看Sybase官方手册学索引工作原理
    学习编程的方法、软件和工具
    大师里奇留给了我们什么
  • 原文地址:https://www.cnblogs.com/Lamboofhome/p/16342155.html
Copyright © 2020-2023  润新知