牛客训练三:处女座的比赛(hash打表)
题目链接:传送门
思路:由于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打表)的更多相关文章
- 牛客训练三:处女座和小姐姐(三)(数位dp)
题目链接:传送门 思路:数位dp的记忆化搜索模板 从高位向低位枚举,逐位确定每一位的6的个数,dp[i][s]表示处理到第i条边,状态为s时的数字的个数. 注意,要使用long long类型. #in ...
- 牛客寒假算法基础集训营3B 处女座的比赛资格(用拓扑排序解决DAG中的最短路)
链接:https://ac.nowcoder.com/acm/contest/329/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 牛客第三场多校 E Sort String
链接:https://www.nowcoder.com/acm/contest/141/E来源:牛客网 Eddy likes to play with string which is a sequen ...
- 牛客第三场多校 H Diff-prime Pairs
链接:https://www.nowcoder.com/acm/contest/141/H来源:牛客网 Eddy has solved lots of problem involving calcul ...
- uestc summer training #9 牛客第三场 BFS计数
G.coloring tree BFS计数 题目:给你n(<=5000)个节点的一颗树 你有K(<=5000)种颜色 你可以给每一个节点染一种颜色 总共有Kn种染色方法 在一种染色方法中 ...
- 牛客训练21674——牛牛与LCM
Problem 链接:https://ac.nowcoder.com/acm/problem/21674 来源:牛客网 牛牛最近在学习初等数论,他的数学老师给他出了一道题,他觉得太简单了, 懒得做,于 ...
- 牛客训练二:处女座的签到题(STL+精度+三角形求面积公式)
题目链接:传送门 知识点: (1)三个点,三角形求面积公式 (2)精度问题: double 15-16位(参考文章) float 6-7位 long long 约20位 int 约10位 unsign ...
- 牛客寒假训练营3 B 处女座的比赛资格(拓扑排序+最短路)
题目链接 这个题,一眼看上去就是最短路的题,边权有负环显然不能用dij,然后出题人又卡了spfa,,那怎么办的想点办法啊,好像还有一个拓扑排序可以求最短路吧,这时候正解就已经得到了,就是拓扑排序求最短 ...
- 牛客训练赛25-A-因数个数
题目链接https://www.nowcoder.com/acm/contest/158/A 无语...这题很迷啊,原谅我的菜,刚开始想用预处理欧拉筛和前缀和,可是这题太血崩了,这样一样要遍历,1-e ...
随机推荐
- Unity塔防游戏源码Warfront Defenders Playmaker Kit v1.7
Warfront Defenders Playmaker Kit, is a World War 2 based Tower Defense game project made using Huton ...
- Unity之MVC 模式
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...
- Codeforces Beta Round #40 (Div. 2)
Codeforces Beta Round #40 (Div. 2) http://codeforces.com/contest/41 A #include<bits/stdc++.h> ...
- width多少,超过了用....表示
maxWidth:'140px',whiteSpace:'nowrap',overflow:'hidden',textOverflow:'ellipsis'
- day 27 Python中进程的操作
进程的创建和结束: multiprocess模块: multiprocess不是一个模块而是python中一个操作.管理进程的包 分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享 ...
- SSKeychain
SSKeyChains对苹果安全框架API进行了简单封装,支持对存储在钥匙串中密码.账户进行访问,包括读取.删除和设置.SSKeyChain的作者是大名鼎鼎的SSToolkit的作者samsoffes ...
- volley的post请求
//volley发送post请 2 private void volleypost() { 3 String url = "http://apis.juhe.cn/idcard/index? ...
- C++中强制类型转换
C++强制类型转换 C++中的强制类型转换虽然兼容C语言中的强制类型转换.但是并不建议在C++中使用C语言风格的强制类型转换.C++中的强制类型转换共有4个关键字分别是:static_cast,con ...
- linux工具介绍
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/index.html 工具参考篇 1. gdb 调试利器 2. ldd 查看程序依赖库 3 ...
- 部分开源gis 方案的比较
3.1MapServer和GeoServer的总体对比 功能上:MapServer弱于GeoServer,QGIS要强于UDIG. 效率上:Mapserver对WMS(Web Map service) ...