题目链接:传送门

参考文章:传送门

思路:

(1)对字符串进行翻译,求出s1(未翻译),s2(已翻译)字符串,并分别对s1,s2进行hash操作。

(2)比较s1的后x位和s2的前x位的hash值,求出最长的长度的中间位置。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = ;
char s1[maxn],s2[maxn],ss[maxn];
int fy[maxn];
typedef unsigned long long ULL;
ULL hash1[maxn],hash2[maxn],pre[maxn],base=;
ULL getl(int l,int r,ULL arr[])
{
return arr[r]-arr[l-]*pre[r-l+];
}
void Init()
{
pre[]=;
for(int i=;i<maxn;i++) pre[i]=pre[i-]*base;
}
int main(void)
{
int T,i;
scanf("%d",&T);
Init();
while(T--)
{
scanf("%s%s",ss,s1+);
int l=strlen(ss),len=strlen(s1+);
for(i=;i<l;i++) fy[ss[i]-'a']=i;
for(i=;i<=len;i++)
{
s2[i]=fy[s1[i]-'a']+'a';
}
for(hash1[]=,hash2[]=,i=;i<=len;i++)
{
hash1[i]=hash1[i-]*base+(ULL)s1[i];
hash2[i]=hash2[i-]*base+(ULL)s2[i];
}
//cout<<s2+1<<endl;
int ans=len;
for(i=len;i<len*;i++) //最长长度一定是偶数,
{
if(i&) continue; //判断偶数
int t1=i/;
int t2=len-t1;
ULL a1=getl(,t2,hash2);
ULL a2=getl(len-t2+,len,hash1);
if(a1==a2)
{
ans=t1;break;
}
}
for(i=;i<=ans;i++) printf("%c",s1[i]);
for(i=;i<=ans;i++) printf("%c",s2[i]);
printf("\n");
}
return ;
}

hdu-4300(字符串hash)的更多相关文章

  1. hdu 4821 字符串hash+map判重 String (长春市赛区I题)

    http://acm.hdu.edu.cn/showproblem.php?pid=4821 昨晚卡了非常久,開始TLE,然后优化了之后,由于几个地方变量写混.一直狂WA.搞得我昨晚都失眠了,,. 这 ...

  2. HDU 4821 字符串hash

    题目大意: 希望找到连续的长为m*l的子串,使得m个l长的子串每一个都不一样,问能找到多少个这样的子串 简单的字符串hash,提前预处理出每一个长度为l的字符串的hash值 #include < ...

  3. hdu 1880 字符串hash

    /*普通的hsah 由于元素太多 空间很小..hash碰撞很厉害.30分*/ #include<iostream> #include<cstdio> #include<c ...

  4. HDU 1880 字符串hash 入门题

    Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔 ...

  5. Hdu 1800 字符串hash

    题目链接 题意: 给出n(n<=3000)个字符串(长度<30,数字组成,肯能存在前导0), 问该序列最少可以分成多少个单调序列.可以转化成求相同字符串的个数的最大值 附上代码: /*** ...

  6. hdu 4622 Reincarnation 字符串hash 模板题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4622 题意:给定一个长度不超过2000的字符串,之后有不超过1e5次的区间查询,输出每次查询区间中不同 ...

  7. HDU 5763 Another Meaning dp+字符串hash || DP+KMP

    题意:给定一个句子str,和一个单词sub,这个单词sub可以翻译成两种不同的意思,问这个句子一共能翻译成多少种不能的意思 例如:str:hehehe   sub:hehe 那么,有**he.he** ...

  8. HDU 1880 魔咒词典 (字符串hash)

    <题目链接> 题目大意: 就是每个字符串有一个配套的对应字符串,询问的时候,无论输出其中的哪一个字符串,输出另一个,如果不存在这个字符串,直接输出"what?". 解题 ...

  9. 算法笔记--字符串hash

    概述: 主要用于字符串的匹配. 定义hash函数: H(c)=(c1bm-1 +c2bm-2 +...+cmb0)mod h 对于字符串c中l-r区间的hash值: H(l,r)=H(1,r)-H(1 ...

  10. HDU 4622 Reincarnation Hash解法详解

    今天想学字符串hash是怎么弄的.就看到了这题模板题 http://acm.hdu.edu.cn/showproblem.php?pid=4622 刚开始当然不懂啦,然后就上网搜解法.很多都是什么后缀 ...

随机推荐

  1. (mysql数据库报错)The user specified as a definer ('root'@'%') does not exist

    权限问题,授权 给 root  所有sql 权限 解决办法: (1)登录MYSQL 以管理员身份运行cmd      >mysql -u root -p      >密码 (2)更改权限 ...

  2. python第三方库requests简单介绍

    一.发送请求与传递参数 简单demo: import requests r = requests.get(url='http://www.itwhy.org') # 最基本的GET请求 print(r ...

  3. Java后端工程师的学习技术栈

    https://loveincode.cnblogs.com/

  4. JS编程题练习

    JS编程题练习 1. 两个数组合并成一个数组排序返回 先依次比较两个数组,按照小的就传入新的数组.当这次比较完之后可能有一个数组的长度很长,留下一些数组,然后在新数组的末尾插入即可. function ...

  5. Linux防火墙操作

    从配置菜单关闭防火墙是不起作用的,索性在安装的时候就不要装防火墙. 查看防火墙状态: /etc/init.d/iptables status暂时关闭防火墙: /etc/init.d/iptables  ...

  6. 33-Java中的String,StringBuilder,StringBuffer三者的区别

    转载自:https://www.cnblogs.com/su-feng/p/6659064.html StringBuilder 详解 (String系列之2) Java中的String,String ...

  7. HTML转义字符 Unicode和CSS伪类介绍

    CSS 伪类用于向某些选择器添加特殊的效果. a:link {color: #FF0000} /* 未访问的链接 */ a:visited {color: #00FF00} /* 已访问的链接 */ ...

  8. stark组件开发之列表页面定制列

    先看一张页面展示的效果图: 看一看我的  model 表!是什么样子: 看一看数据库是什么样子: 看 页面展示图,有表头. 有数据.模型表中,每一个字段, 都指定了 verbose_name. 如何解 ...

  9. (轉)EasyUI - DataGrid 去右边空白滚动条列

    熟悉 EasyUI - DataGrid 的童鞋应该会注意到这样一个情景: 想去掉这块,找了下资料,发现也有人同样纠结:http://www.cnblogs.com/hantianwei/p/3440 ...

  10. geoserver 发布无坐标png

    1.geoserver 安装一些插件的时候,直接去http://docs.geoserver.org/ 官网,选择自己geoserver对应的版本的插件就可以了. 2.geoserver 发布自身带有 ...