【uva10829-求形如UVU的串的个数】后缀数组+rmq or 直接for水过
题意:UVU形式的串的个数,V的长度规定,U要一样,位置不同即为不同字串
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=1770
题解:一开始理解错题意,以为是abcxxxcba(xxx为v),开心地打了后缀数组后发现哎样例不对丫。。
UVA的意思是abcxxxabc(xxx为v)。
类似poj3693,我们暴力枚举U的长度L,对原串按U的长度进行分块。
对于当前分块出来的点x,y=x+u+v是UVU中后一个U中的对应点。
然后往前往后匹配:这里其实是应该用后缀数组+rmq匹配的,然而我用for循环直接暴 过了。。
然后我们得到了两条串的往前往后的lcp1和lcp2。(往前往后都只用匹配L就够了,不然会在下一个分割点找到)
ans+=lcp1+lcp2-L
减L的原因:
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 #include<queue> 6 using namespace std; 7 8 typedef long long LL; 9 const int N=100010; 10 int sl,cl,v; 11 char c[N]; 12 13 int main() 14 { 15 freopen("a.in","r",stdin); 16 freopen("me.out","w",stdout); 17 int T,cas=0; 18 scanf("%d",&T); 19 while(T--) 20 { 21 scanf("%d",&v); 22 scanf("%s",c+1); 23 cl=sl=strlen(c+1); 24 int x,y,now; 25 LL t0,t1,ans=0; 26 for(int L=1;L<=cl;L++) 27 { 28 for(int i=0;(i*L)<=cl;i++) 29 { 30 x=i*L+1,y=((i+1)*L)+v+1; 31 if(y>cl) break; 32 t0=t1=0; 33 for(int j=0;j<L;j++) 34 { 35 if(c[x-j]!=c[y-j] || x-j<1) break; 36 t0++; 37 } 38 for(int j=0;j<L;j++) 39 { 40 if(c[x+j]!=c[y+j] || y+j>cl) break; 41 t1++; 42 } 43 if(t0 && t1 && t0+t1>=L) ans+=t1+t0-L; 44 } 45 } 46 printf("Case %d: %lld\n",++cas,ans); 47 } 48 return 0; 49 }
转载于:https://www.cnblogs.com/KonjakJuruo/p/5920400.html
【uva10829-求形如UVU的串的个数】后缀数组+rmq or 直接for水过相关推荐
- URAL 题目1297. Palindrome(后缀数组+RMQ求最长回文子串)
1297. Palindrome Time limit: 1.0 second Memory limit: 64 MB The "U.S. Robots" HQ has just ...
- 字符串相关处理kmp,前缀数,后缀树,后缀数组,最长回文串,最长重复字串,最长非重复字串
1. 最长回文串 一般用后缀数组或者后缀树可以解决, 用此方法:http://blog.csdn.net/v_july_v/article/details/6897097 预处理后缀树,使得查询LCA ...
- ural 1297 O(nlogn) 后缀数组求最长回文字串
把原串复制一份反过来接在原串后面,中间用没出现过的字符隔开,然后跑后缀数组,在原创枚举每一个位为回文中心(分奇偶讨论),则回文串长度相当于原串与反串对应位置的lcp,所以先用ST预处理,然后查询.复杂 ...
- Manacher算法 - 求最长回文串的利器
求最长回文串的利器 - Manacher算法 Manacher主要是用来求某个字符串的最长回文子串. 不要被manacher这个名字吓倒了,其实manacher算法很简单,也很容易理解,程序短,时间复 ...
- 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数
目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...
- 求有多少个连续字串中所有的字母都出现了偶数次
给出一个长度为 n 的字符串(1<=n<=100000),求有多少个连续字串中所有的字母都出现了偶数次. http://acm.upc.edu.cn/problem.php?id=1001 ...
- 后缀数组以及利用后缀数组求取最长公共字串
后缀树组是一个字符串的所有后缀的排序数组.后缀是指从某个位置 i 开始到整个串末尾结束的一个子串.字符串 r 的从 第 i 个字符开始的后缀表示为 Suffix(i) ,也就是Suffix(i)=r[ ...
- 串′ababaaababaa′的next数组(求next数组思路与实例)
刚刚开始遇到这个问题说实话完全懵逼,然后简单搜了下,还是理解的模棱两可.最后看了几篇博客,现在才算是真正的理解了. 首先在将例子之前先说说这个next数组求解的思路: 第一位的next的值是0,第二位 ...
- 后缀数组 + Hash + 二分 or Hash + 二分 + 双指针 求 LCP ---- 2017icpc 青岛 J Suffix (假题!!)
题目链接 题目大意: 就是给你n个串每个串取一个后缀,要求把串拼起来要求字典序最小!! sum_length_of_n≤5e5sum\_length\_of\_n\leq 5e5sum_length_ ...
最新文章
- keyshot渲染图文教程_一篇文章教你学会3D建模和渲染 反正我是信了
- RDIFramework.NET ━ 9.5 组织机构管理 ━ Web部分
- es6 的数组的方法
- window.open参数完全手册
- cfd计算linux windows,CFD计算分析时常用的数值模拟方法 | 坐倚北风
- 如何用CSS让一个容器水平垂直居中?
- 用python写一个彩票过滤器_37.Python自定义过滤器
- 安卓程序运行后控件不显示_智能镜子显示屏掀起了智能家居行业的新潮流
- ssas 维度属性_Analysis Services(SSAS)多维数据集–维度属性和层次结构
- 会议室预定模拟登陆网站
- 机器学习笔记(十一):优化梯度公式 | 凌云时刻
- Scratch1.4案例:射日小游戏
- ricequant量化交易文件如何保存和读取
- python学习的读书路线
- Chrome截取长屏图片
- C++:构造函数以及析构函数
- Matomo API 官方接口详情
- Windows系统下R语言环境搭建及高级图表绘制
- pr系统兼容性报告不支持视频驱动程序有什么影响?怎么解决?
- 在mini2440上移植使用ffmpeg录像
热门文章
- 找到表中某一列值相同的记录,而且只要其中一条记录的sql
- JAVA调用R语言之Rserve(二)
- androidstudio 日历视图怎么显示农历_记事日历-记事与时间管理工具
- 过渡元素最外层电子数_元素周期表
- 可微偏导数一定存在_【导数压轴题】“偏导数”与含参不等式
- html如何实现新闻标题缩略,CSS新闻标题后面跟着new图标_CSS实例
- 高斯-赛德尔迭代法简介
- transition标签_图解直到今天也没什么人知道的原生dialog标签(非常详细)
- 6.QML动画——状态与过渡
- 膨胀腐蚀操作(MATLAB)