题目:
聪聪昨天费了九牛二虎之力终于计算出一个形如 A+B=CA+B=CA+B=C 加法算式。
但是调皮的明明,却将他计算的式子中的加号和等号用橡皮擦去,于是式子只剩下形如 ABCABCABC 的数字串了。
然而气急败坏的聪聪却怎么也还原不出原来的等式了,这可怎么办呀?你能帮帮他吗?

长度≤106\le 10^6≤106

solution:
因为和只能和大加数位数一样活着多一位,所以枚举AAA,然后哈希判断是否合法

顺便说单哈希绝对被卡了,数据居然还卡双哈希真是惊了,据说题解是随机哈希,然而双哈希只要设不那么常用的模数就可以过了,比如1e9+191e9+191e9+19和998244853998244853998244853,我试了一下1e9+7,1e9+9,9982443531e9+7,1e9+9,9982443531e9+7,1e9+9,998244353都被卡了,不得不说数据实在太强了

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define maxn 1000005
#define int long long
using namespace std;
int n,has1[maxn],has2[maxn],ans,ans2,pw1[maxn],pw2[maxn];
const int bas=10,mod1=1e9+19,mod2=998244853;
char s[maxn];inline void solve(int len,int i){int b,res;b=(has1[n-len]-has1[i]*pw1[n-len-i]%mod1+mod1)%mod1;res=(has1[n]-has1[n-len]*pw1[len]%mod1)%mod1;res=(res+mod1)%mod1; if((has1[i]+b)%mod1!=res) return;b=(has2[n-len]-has2[i]*pw2[n-len-i]%mod2+mod2)%mod2;res=(has2[n]-has2[n-len]*pw2[len]%mod2)%mod2;res=(res+mod2)%mod2;if((has2[i]+b)%mod2==res) ans=i; return;
}signed main(){scanf("%s",s+1); n=strlen(s+1); pw1[0]=pw2[0]=1;for(int i=1;i<=n;i++){pw1[i]=pw1[i-1]*bas%mod1;pw2[i]=pw2[i-1]*bas%mod2;has1[i]=(has1[i-1]*bas%mod1+s[i]-'0')%mod1;has2[i]=(has2[i-1]*bas%mod2+s[i]-'0')%mod2;}int len,b,res;for(int i=1;i<=n/2;i++){//枚举A len=(n-i+1)>>1;if(len<i) len=i;if(s[i+1]=='0' && len+i!=n-1) continue;solve(len,i);if(ans) {ans2=n-len;break;}if(len+1+i<n){++len; solve(len,i);if(ans) {ans2=n-len;break;}}}for(int i=1;i<=ans;i++) printf("%c",s[i]);printf("+");for(int i=ans+1;i<=ans2;i++) printf("%c",s[i]);printf("=");for(int i=ans2+1;i<=n;i++) printf("%c",s[i]);return 0;
}

字符串哈希--聪聪的加法等式相关推荐

  1. ELFhash - 优秀的字符串哈希算法

    原 ELFhash - 优秀的字符串哈希算法 分类:算法杂论算法精讲数据结构 (1424)  (2) 1.字符串哈希: 我们先从字符串哈希说起 在很多的情况下,我们有可能会获得大量的字符串,每个字符串 ...

  2. BZOJ 2152 「国家集训队」聪聪可可(点分治)【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2152 是 hydro 的 BZOJ ...

  3. 【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} ...

  4. BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】

    题目 输入格式 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...

  5. BZOJ1415[Noi2005]聪聪和可可——记忆化搜索+期望dp

    题目描述 输入 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...

  6. 【BZOJ 1415】 1415: [Noi2005]聪聪和可可 (bfs+记忆化搜索+期望)

    1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1640  Solved: 962 Description ...

  7. cogs 2320. [HZOI 2015]聪聪的世界题解

    2320. [HZOI 2015]聪聪的世界 时间限制:6 s   内存限制:512 MB [题目描述] 背景: 聪聪的性取向有问题. 题目描述: 聪聪遇到了一个难题: 给出一个序列a1-an,完成以 ...

  8. 138. 兔子与兔子【字符串哈希】

    很基础的字符串哈希 #include<bits/stdc++.h> using namespace std; typedef unsigned long long int ull; con ...

  9. Singing Superstar 字符串哈希-map操作

    题意 : 给一长度 < 1e5 的字符串s,q < 1e5次询问,每次问一个长 < 30 的串 t 在s中出现的次数,且t不可重叠. 例 : "abababa"中 ...

最新文章

  1. Android 中 Behavior, NestedScrollingParent, NestedScrollingChild 关系
  2. asp.net core安全事项(下)
  3. 用java编写一个图书管理系统_手把手教你编写第一个java程序
  4. 算法入门经典-第七章 例题7-2最大乘积
  5. Python C API 使用详解(二)
  6. Ubuntu下安装Adobe Reader的中文语言包
  7. 将多个csv文件整合到一个csv文件中
  8. 【优化算法】可变步长LMS算法(VSS-LMS)【含Matlab源码 317期】
  9. Vista暴力破解器只是一个玩笑 谁说破解谁撒谎
  10. 浙江丽水龙泉计算机培训,浙江丽水龙泉中等职业学校
  11. php家族族谱代码,家族族谱系统设计.doc
  12. 大数据杀熟行为10月1日起明令禁止!
  13. html5获取经纬度页面,html5获取经纬度
  14. 如何在Windows11安装安卓子系统?
  15. ECN Trade:飓风灾害短暂冲击美国经济
  16. 网站标题设计与搜索引擎
  17. 使用opencv批量裁剪保存图片
  18. 虚幻4_添加武器插槽到骨骼
  19. Gitlab Runner
  20. 漫步者蓝牙自动断开_比苹果AirPods体验更好的蓝牙耳机,漫步者lollipods体验小感...

热门文章

  1. 【jzoj4763】【旷野大计算】【莫队】
  2. 灰度巡线传感器_探索者D1系列教程十 巡线传感器
  3. Kali Linux 2016.1 x86 x64 安装 wine QQ
  4. WordPress让插件随主题一同启用
  5. 台式计算机不显示,台式电脑开机显示器不显示怎么办
  6. 基于OpenCV的视频处理 - 人脸检测
  7. 数据库-Mysql-Ⅰ
  8. mt5 EA策略回测方法
  9. VRTK 初识vrtk,如何在自己的项目中使用vrtk
  10. tcp协议系列文章(3):TLP算法