题目链接:Skr

题意,求不同的回文串的和。

题解:马拉车的时候当找到一个新的回文串时,判断这个回文串的hash值是否在hashmap中,没有就加入然后ans加上这段值,有就不管

#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std;
const int base=23;
const int N=2e6+100;
const int mod=1e9+7;
struct hash
{char s[N];ull h[N],qp[N];ll p[N],len,val[N];void init(){h[0]=val[0]=0;qp[0]=p[0]=1;len=strlen(s+1);for(int i=1;i<=len;i++){p[i]=p[i-1]*10%mod;qp[i]=qp[i-1]*base;h[i]=h[i-1]*base+s[i];val[i]=(1LL*val[i-1]*10%mod+s[i]-'0')%mod;}}ull get_hash(int l,int r){return h[r]-h[l-1]*qp[r-l+1];}int get_val(int l,int r){return ((val[r]-val[l-1]*p[r-l+1]%mod)%mod+mod)%mod;}
}ac;
int mx,len[N],x;
ll ans;
const int HASH = 1000007;
const int maxn=1e7+7;
struct hashmap{ll a[maxn];int head[HASH],nxt[maxn],sz;void init(){memset(head,-1,sizeof(head));sz = 0;}bool find(ull val){int tmp = (val%HASH + HASH) % HASH;for(int i = head[tmp] ; ~i ; i = nxt[i]){if(val == a[i]) return true;}return false;}void add(ull val){int tmp = (val%HASH + HASH) % HASH;if(find(val)) return;a[sz] = val;nxt[sz] = head[tmp];head[tmp] = sz ++;}
}ap;
void ins(int l,int r)
{ull h=ac.get_hash(l,r);if(!ap.find(h)){ap.add(h);ans+=ac.get_val(l,r);ans%=mod;}
}
int main(){scanf("%s",ac.s+1);ac.init();ap.init();//int mx=0,x=0;for(int i=1;i<=ac.len;i++){ins(i,i);if(mx>i)len[i]=min(mx-i,len[2*x-i]);while(i+len[i]+1<=ac.len&&ac.s[i+len[i]+1]==ac.s[i-len[i]-1]){ins(i-len[i]-1,i+len[i]+1);len[i]++;}if(i+len[i]>mx){mx=i+len[i];x=i;}}mx=x=0;memset(len,0,sizeof len);ap.init();for(int i=2;i<=ac.len;i++){if(mx>i)len[i]=min(mx-i+1,len[2*x-i]);while(i+len[i]<=ac.len&&ac.s[i+len[i]]==ac.s[i-len[i]-1]){ins(i-len[i]-1,i+len[i]);len[i]++;}if(i+len[i]-1>mx){mx=i+len[i]-1;x=i;}}printf("%lld\n",ans);return 0;
}

转载于:https://www.cnblogs.com/lhclqslove/p/9743229.html

ACM-ICPC 2018 南京赛区网络预赛 Skr 马拉车+字符串hash+hash表相关推荐

  1. ACM-ICPC 2018 南京赛区网络预赛

    轻轻松松也能拿到区域赛名额,CCPC真的好难 An Olympian Math Problem 问答 只看题面 54.76% 1000ms 65536K Alice, a student of gra ...

  2. ACM-ICPC 2018 南京赛区网络预赛 Lpl and Energy-saving Lamps 线段树

    目录 ACM-ICPC 2018 南京赛区网络预赛 Lpl and Energy-saving Lamps 线段树 题面 题意 思路 ACM-ICPC 2018 南京赛区网络预赛 Lpl and En ...

  3. ACM-ICPC 2018 南京赛区网络预赛 B. The writing on the wall

    题目链接:https://nanti.jisuanke.com/t/30991 2000ms 262144K Feeling hungry, a cute hamster decides to ord ...

  4. ACM-ICPC 2018 南京赛区网络预赛 AC Challenge

    Dlsj is competing in a contest with n (0 < n \le 20)n(0<n≤20) problems. And he knows the answe ...

  5. ACM-ICPC 2018 南京赛区网络预赛 - AC Challenge(状压DP)

    ACM-ICPC 2018 南京赛区网络预赛 - AC Challenge 题意: 有n个题目,每个题目有一些信息,,第 t 个过第 i 题会得到分数 t*ai + bi 在过第 i 题前必须要先过  ...

  6. ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge(状压dp)

    Dlsj is competing in a contest with n (0 < n \le 20)n(0<n≤20) problems. And he knows the answe ...

  7. E. AC Challenge ACM-ICPC 2018 南京赛区网络预赛 状压dp + 枚举状态

    博客目录 原题 题目链接 Dlsj is competing in a contest with n (0 < n \le 20)n(0<n≤20) problems. And he kn ...

  8. ACM-ICPC 2018 南京赛区网络预赛 I.Skr(Manacher马拉车+Hash哈希/回文树)

    题目 给一个只由数字构成的字符串s(|s|<=2e6) 求s的所有本质不同字符串之和%1e9+7, 每一个不同字符串的贡献为其十进制下的值 思路来源 https://blog.csdn.net/ ...

  9. ACM-ICPC 2018 南京赛区网络预赛 I Skr (马拉车+hash去重)或(回文树)

    https://nanti.jisuanke.com/t/30998 题意 给一串由0..9组成的数字字符串,求所有不同回文串的权值和.比如说"1121"这个串中有"1& ...

最新文章

  1. SQL Server 表分区实战系列(文章索引)
  2. v-bind 中a标签的使用
  3. 一个SQL的几种写法
  4. “伪基站”任意冒用手机号短信诈骗
  5. java 通道 双向原理_Java-NIO(四):通道(Channel)的原理与获取
  6. Weblogic 10.3.5在64位Windows系统下的安装和配置
  7. 将list的内容转换成固定个数的分组字符串
  8. 我眼中的“SSD” ..update
  9. MATLAB GUI新手备忘录
  10. 活动目录设计中需要遵循的七个原则
  11. android 反编译jar包
  12. 小米手机怎么删除桌面计算机,手机桌面图标怎么删除,小米手机怎样删除桌面图标-...
  13. 语音助手——简介与交互过程
  14. 练法、打法、演法——回味老罗踢馆这场戏
  15. 用计算机算e的次方,e的值(万能计算器在线使用)
  16. Java中识别二维码并且提高二维码的识别率
  17. Redis基本使用|基本命令|redis事务|Jedis|持久化|订阅|集群|
  18. 什么是AppImage
  19. php中单引号双引号那点事---顺便说说把php变量的值传给js
  20. 关于Office弹窗+横幅提示“你的许可证不是正版,并且你可能是盗版软件的受害者...”的解决方案——以Office2019为例

热门文章

  1. mysql 多表查询练习题(一)数据准备
  2. html5类选择器用什么表示,HTML_揭秘常用的五类CSS选择器用法,有许多新手朋友不知道在什么 - phpStudy...
  3. idea maven项目无法下载自定义的仓库完美解决办法
  4. 【C语言】之实现闰年判断
  5. k图着色 遗传算法的简单python伪代码
  6. PERL XS tutorial
  7. xs128之OLED12864
  8. matcom v4.5 软件下载
  9. 【PMP考前冲刺题-第一小节(2022.7)】
  10. 【python】一篇文章入门python简单画图