字符串hash——洛谷P1117 优秀的拆分
来源:互联网 发布:mysql表结构导出word 编辑:程序博客网 时间:2024/05/16 03:16
https://www.luogu.org/problem/show?pid=1117
这里讲一95分的算法;
就是用字符串hash取搞;
怎么弄呢?
我们枚举AA
所有的AA
用字符串hash取判断A和A是否相同;
然后记录AA的开头位置和结尾位置;
然后乘法原理统计答案就好了;
#include<bits/stdc++.h>#define pow fuck#define Ll long longusing namespace std;const int N=2e3+5;Ll A[N],B[N],hush[N],pow[N];Ll S=999983,mo=1e8+9,ans;int n,m;char c[N];Ll get(int x,int y){return (hush[y]-hush[x-1]*pow[y-x+1]%mo+mo)%mo;}int main(){ scanf("%d",&m); pow[0]=1; for(int i=1;i<=N;i++)pow[i]=pow[i-1]*S%mo; while(m--){ scanf("%s",c+1); n=strlen(c+1); for(int i=1;i<=n;i++)hush[i]=(hush[i-1]*S+c[i]-96)%mo; memset(A,0,sizeof A); memset(B,0,sizeof B); for(int i=1;i<=n;i++) for(int j=i;j+j-i-1<=n;j++) if(get(i,j)==get(j+1,j+j-i+1)) A[i]++,B[j+j-i+1]++; ans=0; for(int i=1;i<n;i++)ans+=B[i]*A[i+1]; printf("%lld\n",ans); }}
阅读全文
1 0
- 字符串hash——洛谷P1117 优秀的拆分
- 【NOI2016】优秀的拆分
- 洛谷P1117 棋盘游戏
- mycat1.6.5分片(字符串拆分hash)
- bzoj4650: [Noi2016]优秀的拆分
- 4650: [Noi2016]优秀的拆分
- boj408字符串——hash的应用
- Vijos P1117 数的划分
- Vijos P1117数的划分
- [后缀数组 枚举 字符串分段] BZOJ 4650 [Noi2016]优秀的拆分
- 对于字符串的拆分
- 字符串的拆分
- 字符串的拆分(componentsSeparatedByCharactersInSet)
- 字符串的拆分split
- 字符串的拆分方法
- 字符串的拆分(componentsSeparatedByCharactersInSet)
- iOS字符串的拆分
- 数据库技巧汇总——拆分字符串
- TensorFlow的基本理论知识(一)
- 函数的子模性质
- 一个上啦加载下拉刷新
- Qt5.8 按钮弹出菜单
- C++学习(34)
- 字符串hash——洛谷P1117 优秀的拆分
- 模拟Servlet单例多线程
- Android内容提供者之读取联系人信息
- R语言利用caret包比较ROC曲线
- makefile笔记
- Navicat for Mysql外键创建失败
- iOS-AVFoundation自定义相机详解
- js函数回调错误
- c#图解教程笔记1