【题目链接】:http://codeforces.com/contest/514/problem/C

【题意】



给你n个字符串;

然后给你m个询问;->m个字符串

对于每一个询问字符串

你需要在n个字符串里面找到和它的长度相同,且只有一个位置的字符不同的字符串;

或者告知这是不存在的;

【题解】



字符串hash

因为只有3个字符

所以权值就为3^x;

找个大质数取模就好;

不够大就再大一点。。

然后对于每一位,尝试换成其他两个字母,看看存不存在;



【Number Of WA】



3



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define ps push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%lld",&x)
#define ref(x) scanf("%lf",&x)
#define ms(x,y) memset(x,y,sizeof x) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 6e5+100;
const LL MOD = 1e12+7; int n,m;
LL p[N];
string s;
set<LL> myset; int main()
{
//freopen("F:\\rush.txt","r",stdin);
p[0] = 1;
rep1(i,1,N-2)
p[i] = (p[i-1]*3)%MOD;
rei(n),rei(m);
rep1(i,1,n)
{
cin >> s;
LL temp = 0;
int len = s.size();
rep1(j,0,len-1)
temp = (temp*3+s[j]-'0')%MOD;
myset.insert(temp);
}
rep1(i,1,m)
{
cin >> s;
bool ok = false;
int len = s.size();
LL temp = 0,ttemp;
rep1(j,0,len-1)
temp = (temp*3+s[j]-'0')%MOD;
rep1(j,0,len-1)
{
char t = s[j];
for (char d='a';d<='c';d++)
if (t!=d)
{
ttemp = (temp-(t-'0')*p[len-j-1])%MOD;
if (ttemp<0) ttemp=(ttemp+MOD)%MOD;
ttemp=(ttemp+(d-'0')*p[len-j-1])%MOD;
if (myset.count(ttemp))
{
ok = true;
break;
}
}
if (ok) break;
}
if (ok)
puts("YES");
else
puts("NO");
}
//printf("\n%.2lf sec \n", (double)clock() / CLOCKS_PER_SEC);
return 0;
}

最新文章

  1. 如何正确响应ArcGIS JavaScript API中图形的鼠标事件
  2. vimperator setting records
  3. HDU 1159 Common Subsequence --- DP入门之最长公共子序列
  4. iwork 09 可以用的序列号
  5. 解决svn的working copy locked并且cleanup恢复不能的情况
  6. 用sed删除空行
  7. Hibernate 查询语句
  8. Windows 7下配置JDK环境变量和Java环境变量配置
  9. linux du 显示目录下的各个子目录的大小
  10. [11-3] Gradient Boosting regression
  11. 关于LAMP的配置之(虚拟机的安装、创建、配置)
  12. 关于js中的表单事件
  13. Android数据绑定技术一,企业级开发
  14. 从0开始的Python学习008变量
  15. Vue.component注意事项
  16. HTTP 06 用户认证
  17. CentOS安装glibc异常Protected multilib versions
  18. SWPU-ACM集训队周赛之组队赛(3-11) C题题解
  19. CF912E Prime Gift
  20. css溢出滚动条及去除滚动条的方法

热门文章

  1. ES mapping可以修改include_in_all,也可以修改index_options,norm,但是无法修改_all属性!
  2. union 的一个简单例子,搜狗笔试题
  3. java静态代理实例
  4. 作业训练------通过读取c.txt文件中的内容等号右值,并将右值的最大值、最小值、平均值打印到屏幕上。
  5. Linux基本命令 文件管理 下部
  6. 暴力(python)
  7. MVC系列学习(十三)-合并JS和CSS
  8. Java系列学习(八)-继承
  9. Eclipse中搭建Apache Tomcat7源码调试环境
  10. ionic start 又一次的出错