• HDU1880 魔咒词典


    题目大意:对应的输入多行,每行两个字符串,两个字符串互相映射。接下来询问的时候,如果这个字符串出现过,输出其对应的字符串。

    分析:二重哈希来判断字符串是否存在,输出其对应的字符串就行。二重哈希的入门题,字符串还挺有意思的。

    代码:

    #include<iostream>
    #include<string>
    #include<map>
    #include<string>
    using namespace std;
    typedef unsigned long long ull;
    map<pair<int,int>,string> dict;
    const int s1=133,s2=233;
    const int maxn=1e5+7;
    char s[1000],t[1000];
    int hash1(char* s){
        int ans=0;
        for(int i=0;s[i];i++)
            ans=(ans*s1+s[i])%maxn;
        return ans;
    }
    int hash2(char* s){
        int ans=0;
        for(int i=0;s[i];i++)
            ans=(ans*s2+s[i])%maxn;
        return ans;
    }
    void read(){
        int cnt=0;
        while(scanf("%s",s)&&s[0]!='@'){
            getchar();
            cnt=0;
            while((t[cnt]=getchar())!='
    ')
                cnt++;
            t[cnt]='';
            dict[make_pair(hash1(s),hash2(s))]=t;
            dict[make_pair(hash1(t),hash2(t))]=s;
        }
    }
    void solve(){
        int m,x,y,cnt=0;
        scanf("%d",&m);
        getchar();
        while(m--){
            cnt=0;
            while((s[cnt]=getchar())!='
    ')
                cnt++;
            s[cnt]='';
            x=hash1(s);
            y=hash2(s);
            if(s[0]=='['){
                if(dict.find(make_pair(x,y))==dict.end()) printf("what?
    ");
                else cout<<dict[make_pair(x,y)]<<endl;
            }
            else{
                if(dict.find(make_pair(x,y))==dict.end()) printf("what?
    ");
                else cout<<dict[make_pair(x,y)].substr(1,dict[make_pair(x,y)].length()-2)<<endl;
            }
        }
    }
    int main(){
        read();
        
        solve();
       
        return 0;
    }
  • 相关阅读:
    python CST中国标准时间格式转换
    pytest+报告插件
    getopt实现命令行
    初识Redis
    python list 切片及翻转的使用
    mysql中information_schema表
    获取两个字符串中最长的相同子串
    mongodb数据库备份
    VS2005下边不能使用target>remote tool解决方法
    wince LoadDriver tool
  • 原文地址:https://www.cnblogs.com/SwiftAC/p/12153073.html
Copyright © 2020-2023  润新知