自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 HDU 5769 Substring(后缀数组)

传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=5769 思路:不考虑X字符,先考虑怎么求本质不同的串有几个,那么就是枚举一遍height数组,去掉前缀相同的就可以了。       我们考虑X字符的话,就要保证所有求得的串都要包含这个字符。那么我们事先求一个数组,pos[i]表示当前字符(包括自身)的右边的第一个X字符的位置。然后还是枚举h

2016-08-25 20:35:57 367

原创 HDU 2328 Corporate Identity(后缀数组-求多个串的最长共同子串)

传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=2328 思路:把所有字符串拼接起来,中间用’#’隔开,然后把这个问题转化为判定性的问题,判定是否存在一个长度为x的子串是共同子串。求出所有子串中的最少长度。然后从1~minlen中二分判定,按照当前的判定长度对height进行分组,如果碰到存在就返回在字符串中的下标,否则就继续二分,不存在就输

2016-08-22 18:00:46 736

原创 HDU 3518 Boring counting(后缀数组)

传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=3518 问你有几种子串出现了2次以上。水题。 只要用后缀数组求出height,然后枚举长度,把height按照长度分组,如果一组里的最小的sa和最大的sa,不重叠,就可以把ans++。#include <cstdio>#include <cstring>#include <algorit

2016-08-22 15:36:27 378

原创 HDU 2459 Maximum repetition substring(后缀数组+RMQ-重复次数最多的子串)

传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=2459 思路:枚举子串的长度。这个思路很精髓,就是长度重复子串肯定会包含str[0],str[l],str[l * 2],str[l * 3]……中的相邻两个,然后我们求出相邻两个的最长公共前缀,然后算一下一共重复了几次,再把字符串往前推,是否能找到重复的起始位置,然后再一边用rank数组更

2016-08-22 14:58:43 403

原创 POJ 2406 Power Strings (后缀数组入门--最大重复次数)

传送门:http://poj.org/problem?id=2406 题意就是,这个字符串是由x个字符串重复得到的,问你x最大是多少。就是求最小的循环节。 用KMP也可以做。作为后缀数组的练习也可以,使用了DC3算法,当做是模板好了。思路:假设长度为len,一个循环节为n,那么只要整个字符串和后面(len-n)长度的字符串的最长公共前缀是len-n就可以了。suffix(sa[i])和suffi

2016-08-20 20:10:02 460

原创 HDU 5306 Gorgeous Sequence(线段树)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5306 三种操作: 0 x y t: 使这个区间的值变成min(t,a[i])。 1 x y: 区间最大值 2 x y: 区间和1和2都是常见操作,就是这个0操作很难搞定。参考了吉如一论文。感觉非常的强。区间的max可以看做是区间标记,我们可以维护3个值,区间最大值,区间次大值,区间最大值的个数。然

2016-08-15 16:49:43 879

原创 HDU 1403 Longest Common Substring(后缀数组入门)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1403拖了这么久的后缀数组,终于准备学一学了。 做的第一题(套的第一个板子),虽然还是没看不懂是怎么实现的,但是还是可以套一套的。suffix(i)表示[0,len)的字符串的一个后缀,下标为[i,len)。后缀数组里,要求的是三个数组,sa[],rank[],height[]。 sa[i]表示的排名为

2016-08-14 10:28:33 615

原创 HDU 5828 多校第八场 1008 Rikka with Sequence(线段树--数据加强版)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5828题意:三种操作,一种是区间增加,一种是区间开方,一种是区间求和。原思路(数据已加强,这个方法已经过不了):很快能想到,如果一个100000的数字,最多开方个四五次以后,就变成1了,而且sqrt(1)=1,那么我们就可以在更新的时候想到一个很方便的剪枝,就是,如果这个区间的最大值是1,也就是这个区间全部

2016-08-11 17:26:47 1719 6

原创 HDU 5818 多校第七场 1010 Joint Stacks (线段树)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5818 题解说这题有O(n)的做法,并没有想到,只想到线段树的。 直接把两个栈同时在一颗线段树里操作,标记一下每个区间A有几个,B有几个,然后merge的时候区间更新一下,相互翻转一下个数。每次查询的时候,实际上就是查询最右边的A或者最右边的B,pop掉的空位就留着不要了。

2016-08-09 17:17:04 387

转载 HDU 5787 K-wolf Number (数位DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5787题意:求区间[L,R]内,任意相邻k位(如果位数不足k,就是全部的数位)没有两两相同的数位的数的个数。思路:数位DP,因为K<=5,我们最多需要保存下来当前位的前4位就足够了。 因为dp[pos][p1][p2][p3][p4]表示,现在枚举取第pos位,pos位之前的四位分别为p1,p2,p3,

2016-08-06 16:37:11 387

原创 HDU 5776 sum

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5776 题意:求是否有一段区间的连续和%m==0。 我们可以看到,n的范围是100000,m是5000。那么,n个数字就会产生n个前缀和,如果n>=m,那么n个前缀和就会产生在[0, m)的区间内。如果每个前缀和都不相等,那么肯定会有%m==0的情况,也就是YES。而且,当n>m的时候,必定会产生两个前

2016-08-02 09:43:46 301

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除