题目链接:传送门

思路:由于MOD只有9983大小,所以四位小写字母的字符串组合有26+26^2+26^3+26^4=475254种组合。

所以只要每次枚举出从1到475254中的hash值对应的字符串记录在数组中,然后以O(1)的方式查找即可。

注意:

(1)每个字符串对应一个唯一的值,所以按照字符串的顺序递增来组成hash值。

(2)注意index会与其他函数名称冲突,造成编译错误,要改一下。

#include<bits/stdc++.h>
using namespace std;
const int MOD = ;
const int maxn = 1e5+;
int p,q,r,t,mul[],Index[],vis[MOD];
string res[maxn][],ss,str;
void Init()
{
ss="a";
mul[]=p;mul[]=q;mul[]=r;
for(int i=;i<;i++) Index[i]=i*t+t;
for(int i=;i<maxn;i++) res[i][]=res[i][]="";
memset(vis,,sizeof(vis));
}
void add()
{
int len=ss.size();
ss[len-]++;
while(ss[len-]>'z'&&len>=){
ss[len-]='a';
ss[len-]++;
len--;
}
if(ss[]>'z'){
ss[]='a';
ss='a'+ss;
}
}
int getsum(string st)
{
int ans=;
for(int i=;i<st.length();i++){
ans=(ans*mul[(i+)%]+Index[st[i]-'a'])%MOD;
}
return ans;
}
int main(void)
{
int i,j,tmp,k,ff,T;
while(~scanf("%d%d%d%d",&p,&q,&r,&t)){
Init();
for(int i=;i<maxn;i++){
tmp=getsum(ss);
if(vis[tmp]) res[tmp][]=ss;
else res[tmp][]=ss;
vis[tmp]=;
add();
}
scanf("%d",&T);
while(T--){
cin>>str;
tmp=getsum(str);
if(str==res[tmp][]) cout<<res[tmp][]<<endl;
else cout<<res[tmp][]<<endl;
}
}
return ;
}

牛客训练三:处女座的比赛(hash打表)的更多相关文章

  1. 牛客训练三:处女座和小姐姐(三)(数位dp)

    题目链接:传送门 思路:数位dp的记忆化搜索模板 从高位向低位枚举,逐位确定每一位的6的个数,dp[i][s]表示处理到第i条边,状态为s时的数字的个数. 注意,要使用long long类型. #in ...

  2. 牛客寒假算法基础集训营3B 处女座的比赛资格(用拓扑排序解决DAG中的最短路)

    链接:https://ac.nowcoder.com/acm/contest/329/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  3. 牛客第三场多校 E Sort String

    链接:https://www.nowcoder.com/acm/contest/141/E来源:牛客网 Eddy likes to play with string which is a sequen ...

  4. 牛客第三场多校 H Diff-prime Pairs

    链接:https://www.nowcoder.com/acm/contest/141/H来源:牛客网 Eddy has solved lots of problem involving calcul ...

  5. uestc summer training #9 牛客第三场 BFS计数

    G.coloring tree BFS计数 题目:给你n(<=5000)个节点的一颗树 你有K(<=5000)种颜色 你可以给每一个节点染一种颜色 总共有Kn种染色方法 在一种染色方法中 ...

  6. 牛客训练21674——牛牛与LCM

    Problem 链接:https://ac.nowcoder.com/acm/problem/21674 来源:牛客网 牛牛最近在学习初等数论,他的数学老师给他出了一道题,他觉得太简单了, 懒得做,于 ...

  7. 牛客训练二:处女座的签到题(STL+精度+三角形求面积公式)

    题目链接:传送门 知识点: (1)三个点,三角形求面积公式 (2)精度问题: double 15-16位(参考文章) float 6-7位 long long 约20位 int 约10位 unsign ...

  8. 牛客寒假训练营3 B 处女座的比赛资格(拓扑排序+最短路)

    题目链接 这个题,一眼看上去就是最短路的题,边权有负环显然不能用dij,然后出题人又卡了spfa,,那怎么办的想点办法啊,好像还有一个拓扑排序可以求最短路吧,这时候正解就已经得到了,就是拓扑排序求最短 ...

  9. 牛客训练赛25-A-因数个数

    题目链接https://www.nowcoder.com/acm/contest/158/A 无语...这题很迷啊,原谅我的菜,刚开始想用预处理欧拉筛和前缀和,可是这题太血崩了,这样一样要遍历,1-e ...

随机推荐

  1. Unity塔防游戏源码Warfront Defenders Playmaker Kit v1.7

    Warfront Defenders Playmaker Kit, is a World War 2 based Tower Defense game project made using Huton ...

  2. Unity之MVC 模式

    MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...

  3. Codeforces Beta Round #40 (Div. 2)

    Codeforces Beta Round #40 (Div. 2) http://codeforces.com/contest/41 A #include<bits/stdc++.h> ...

  4. width多少,超过了用....表示

    maxWidth:'140px',whiteSpace:'nowrap',overflow:'hidden',textOverflow:'ellipsis'

  5. day 27 Python中进程的操作

    进程的创建和结束: multiprocess模块: multiprocess不是一个模块而是python中一个操作.管理进程的包 分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享 ...

  6. SSKeychain

    SSKeyChains对苹果安全框架API进行了简单封装,支持对存储在钥匙串中密码.账户进行访问,包括读取.删除和设置.SSKeyChain的作者是大名鼎鼎的SSToolkit的作者samsoffes ...

  7. volley的post请求

    //volley发送post请 2 private void volleypost() { 3 String url = "http://apis.juhe.cn/idcard/index? ...

  8. C++中强制类型转换

    C++强制类型转换 C++中的强制类型转换虽然兼容C语言中的强制类型转换.但是并不建议在C++中使用C语言风格的强制类型转换.C++中的强制类型转换共有4个关键字分别是:static_cast,con ...

  9. linux工具介绍

    http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/index.html 工具参考篇 1. gdb 调试利器 2. ldd 查看程序依赖库 3 ...

  10. 部分开源gis 方案的比较

    3.1MapServer和GeoServer的总体对比 功能上:MapServer弱于GeoServer,QGIS要强于UDIG. 效率上:Mapserver对WMS(Web Map service) ...