给你A B两个串,让你切B串两刀,问你能否把切开的三个串拼成A。

哈希显然。

#include<cstdio>
#include<cstring>
using namespace std;
typedef unsigned long long ull;
const ull MOD1=2000000011;
const ull MOD2=1000000007;
const ull base1=10007;
const ull base2=10009;
int n;
char a[10010],b[10010]/*,d[10010],e[10010]*/;
ull b1s[10010],b2s[10010];
ull hs[3][10010];
const int c[7][4]={{0,0,0,0},{0,1,2,3},{0,1,3,2},{0,2,1,3},{0,2,3,1},{0,3,1,2},{0,3,2,1}};
int main(){
b1s[0]=b2s[0]=1;
scanf("%s%s",b+1,a+1);
// memcpy(d,b,sizeof(b));
// memcpy(e,a,sizeof(a));
n=strlen(a+1);
for(int i=1;i<=n;++i){
b1s[i]=b1s[i-1]*base1%MOD1;
b2s[i]=b2s[i-1]*base2%MOD2;
}
ull hs2[3]={0};
for(int i=1;i<=n;++i){
if(a[i]<='Z'){
a[i]+=32;
}
if(b[i]<='Z'){
b[i]+=32;
}
hs2[1]=(hs2[1]*base1%MOD1+b[i]-'a')%MOD1;
hs2[2]=(hs2[2]*base2%MOD2+b[i]-'a')%MOD2;
hs[1][i]=(hs[1][i-1]*base1%MOD1+a[i]-'a')%MOD1;
hs[2][i]=(hs[2][i-1]*base2%MOD2+a[i]-'a')%MOD2;
}
ull hs1[3][4];
int len[4];
len[0]=0;
for(int i=1;i<=n-2;++i){
for(int j=i+1;j<=n-1;++j){
len[1]=i;
len[2]=j-i;
len[3]=n-j; hs1[1][1]=hs[1][i];
hs1[1][2]=(hs[1][j]-hs[1][i]*b1s[len[2]]%MOD1+MOD1)%MOD1;
hs1[1][3]=(hs[1][n]-hs[1][j]*b1s[len[3]]%MOD1+MOD1)%MOD1;
hs1[2][1]=hs[2][i];
hs1[2][2]=(hs[2][j]-hs[2][i]*b2s[len[2]]%MOD2+MOD2)%MOD2;
hs1[2][3]=(hs[2][n]-hs[2][j]*b2s[len[3]]%MOD2+MOD2)%MOD2; for(int k=1;k<=6;++k){
if(((hs1[1][c[k][1]]*b1s[len[c[k][2]]+len[c[k][3]]]%MOD1+hs1[1][c[k][2]]*b1s[len[c[k][3]]]%MOD1)%MOD1+hs1[1][c[k][3]])%MOD1 == hs2[1] &&
((hs1[2][c[k][1]]*b2s[len[c[k][2]]+len[c[k][3]]]%MOD2+hs1[2][c[k][2]]*b2s[len[c[k][3]]]%MOD2)%MOD2+hs1[2][c[k][3]])%MOD2 == hs2[2]){
puts("YES");
for(int l=1;l<=3;++l){
if(c[k][l]==1){
for(int m=1;m<=len[1];++m){
putchar(a[m]);
}
}
else if(c[k][l]==2){
for(int m=len[1]+1,mm=1;mm<=len[2];++m,++mm){
putchar(a[m]);
}
}
else{
for(int m=len[1]+len[2]+1,mm=1;mm<=len[3];++m,++mm){
putchar(a[m]);
}
}
puts("");
}
return 0;
}
} }
}
puts("NO");
return 0;
}

【枚举】【字符串哈希】Gym - 101164K - Cutting的更多相关文章

  1. 【NOIP模拟】Grid(字符串哈希)

    题目背景 SOURCE:NOIP2016-RZZ-1 T3 题目描述 有一个 2×N 的矩阵,矩阵的每个位置上都是一个英文小写字符. 现在需要从某一个位置开始,每次可以移动到一个没有到过的相邻位置,即 ...

  2. CF1056E Check Transcription 字符串哈希

    传送门 暴力枚举\(0\)的长度,如果对应的\(1\)的长度也是一个整数就去check是否合法.check使用字符串哈希. 复杂度看起来是\(O(st)\)的,但是因为\(01\)两个数中数量较多的至 ...

  3. HASH 字符串哈希 映射转化

    哈希HASH的本质思想类似于映射.离散化. 哈希,通过给不同字符赋不同的值.并且钦定一个进制K和模数,从而实现一个字符串到一个模意义下的K进制数上. 它的主要目的是判重,用于$DFS$.$BFS$判重 ...

  4. Codeforces Round #543 (Div. 2) F dp + 二分 + 字符串哈希

    https://codeforces.com/contest/1121/problem/F 题意 给你一个有n(<=5000)个字符的串,有两种压缩字符的方法: 1. 压缩单一字符,代价为a 2 ...

  5. 【CodeForces】961 F. k-substrings 字符串哈希+二分

    [题目]F. k-substrings [题意]给定长度为n的串S,对于S的每个k-子串$s_ks_{k+1}...s_{n-k+1},k\in[1,\left \lceil \frac{n}{2} ...

  6. 【BZOJ3555】企鹅QQ(字符串哈希)

    [BZOJ3555]企鹅QQ(字符串哈希) 题面 BZOJ 题解 把前缀哈希一下,后缀哈希一下 枚举哪个位置不选,然后检查一下相同就行了.. 为什么我的\(Hash\)老是\(WA\), 为什么\(Z ...

  7. UVA - 11475 Extend to Palindrome —— 字符串哈希 or KMP or 后缀数组

    题目链接:https://vjudge.net/problem/UVA-11475 题意: 给出一个字符串,问在该字符串后面至少添加几个字符,使得其成为回文串,并输出该回文串. 题解: 实际上是求该字 ...

  8. Luogu P4503 [CTSC2014]企鹅QQ(字符串哈希)

    P4503 [CTSC2014]企鹅QQ 题面 题目背景 \(PenguinQQ\) 是中国最大.最具影响力的 \(SNS(Social Networking Services)\) 网站,以实名制为 ...

  9. HDU 1880 魔咒词典(字符串哈希)

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

随机推荐

  1. 日常开发技巧:使用notify-send发送通知

    背景 在终端执行一些需要较长时间的命令时,会切换到别的界面.但为了知道是否执行完成,需要时不时地切换过去看一眼.很麻烦. 解决方式 为了减少这种麻烦,可以使用notify-send,发送桌面通知.no ...

  2. TCP之Nagle算法&&延迟ACK

    1. Nagle算法: 是为了减少广域网的小分组数目,从而减小网络拥塞的出现: 该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组ack到达之前不能发送其他的小分组,tcp需要 ...

  3. HTML综合实例【月福首页】

    1. 首页的布局结构 2. 排版的准备工作 网站的素材:与当前网页放在一起. 创建一个html文件,来进行排版. 网页的背景色 确定主页的宽度:778px 3. HTML注释 <!-- 注释内容 ...

  4. 自动化测试===Macaca环境搭建,自我总结

    安装jdk 安装安卓sdk(打开sdk的时候出现问题linux===启动sdk manager下载配置sdk的时候报错的解决办法) 安装gradle,配置环境变量(MACACA===gradle下载和 ...

  5. CF625D Finals in arithmetic-构造,贪心,细节

    题目链接:http://codeforces.com/contest/625/problem/D 题意: 给你一个数字字符串s,长度1e6,算是一个大数吧,让你找到一个x,使得,x加上  逆转(x)= ...

  6. 关闭自动弹出照片自动弹出iTunes以及关闭手机照片流

    关闭自动弹出照片自动弹出iTunes以及关闭手机照片流 如何阻止iPhone连接Mac后自动弹出照片? 时间:2015/6/18 17:07:15来源:本站原创作者:Chenjh我要评论 很多新 iP ...

  7. 如何在阿里云esc上安装wordpress

    本人的个人网纱建好,但是由于新申请的域名还没有备案 所以暂时无法通过域名访问. 1.按顺序边看边跟着做基本上你能够很优雅的完成大部分设置. http://bbs.aliyun.com/read/162 ...

  8. 其实linux下远程windows并不麻烦

    1:如果你是安装的ubuntu.那么安装完成之后就自带一个Remmina的远程桌面工具 2:这里我们需要安装rdesktop和tsclient,其中rdesktop是基于命令行的工具,tsclient ...

  9. SQL快速入门 ( MySQL快速入门, MySQL参考, MySQL快速回顾 )

    SQL 先说点废话,很久没发文了,整理了下自己当时入门 SQL 的笔记,无论用于入门,回顾,参考查询,应该都是有一定价值的,可以按照目录各取所需.SQL数据库有很多,MySQL是一种,本文基本都是SQ ...

  10. jquery&javascript 跨域jsonp

    $(function(){ $.ajax({ type: "get", async: false, url: "http://flightQuery.com/jsonp/ ...