自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Broken Wings

新浪微博 Geopelia 欢迎关注多多交流~

  • 博客(9)
  • 收藏
  • 关注

原创 poj2406 Power Strings kmp

一个字符串可以由他的一个子串a重复n次得到,现在给一个长度不大于10^6的字符串,求最长n。      跟白书上的period (训练之南P213,例13)基本一样甚至还简单一点。核心就是利用KMP中的失配函数求最短循环节。可以得到对于字符串的第i位,若有i % (i-f[i])==0,则f[i]到i之间的部分及为这个串的最短循环节,具体画个图,或者参考白书上的图,很容易就能看出来。   

2013-09-29 19:25:19 626

原创 hdu1251 统计难题 trie

顺手水了一道trie,原来都是直接写静态的,这次用后缀自动机的存储方式写了一下,写成这种“伪动态”的存储方式即比静态的省空间,而且也没写动态的那么多麻烦。题目的话,插入的时候沿路径吧每个节点的权值加一,统计的时候直接输出当前前缀走到底时的节点上的权值即可。走空就是0了。#include #include #include #include #include #include

2013-09-28 21:02:03 724

原创 ural 1297 Palindrome 后缀数组

给一个长度不超过1000的由大小写字母组成的字符串,求最长回文子串。一眼看上去就是一道裸题竟然调了这么久...一开始的思路是把原串翻转接到原串后面(用分隔符隔开,并且串为加分隔符)构造后缀数组之后直接枚举相邻的sa,判断两个位置是否在不同的串里并且对应同一个位置。后来各种WA。给个数据aacdlkoiijtfidcaa ,因为只枚举相邻后缀的话,aa这个最早的回文串根本找不出来...后来的做法是求

2013-09-28 20:55:09 754

原创 spoj 694,705 后缀数组,后缀自动机

题意很简单,给一个字符串,求这个字符串有多少个不同的子串。这两题其实是一道,只不过694的范围是1000,705的范围是50000。写后缀数组的话,先求出sa,height这两个数组,因为每个后缀一定是一个独一无二的子串,所以可以直接把len先给ans,接下来就是找非后缀的子串,我的做法是直接循环sa,因为相邻的后缀已经是最相近的了,我要添加的就只是后缀i中从height[i]+1位开始到倒数第二

2013-09-27 20:56:55 837

原创 poj3261 Milk Patterns (后缀数组)

给n(n#include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long ll;const int maxn=40000+40;int s[maxn],

2013-09-27 16:46:40 776

原创 poj1743 后缀数组

楼天成男人八题中的一道,给n个1..88的数字组成一个串S,要找出其中最长的“theme”,theme是串S的一个字串,具体的定义是 1.长度至少为5; 2.自身或者自身的变形在其他位置至少出现了一次 3.条件2中的两个字串不重叠。 变形的含义是对某个串,对他的每一位加上或减掉一个常数C,得到的新串就是原串的变形。       根据题意的匹配规则,不难想到把相邻的两个数做差得到一个新串,然后就

2013-09-26 22:36:00 700

原创 hdu 1890伸展树(splay tree)区间翻转

一道用伸展树实现区间翻转的题..可能是第一次写翻转,明明是一道水题结果又搞了好久- -题意是给一串数,做n次操作,第i次操作选取区间 [a,b] 翻转,其中a为i,b为当前数组中第i小的数,并且输出翻转前第i小的数所在的位置。思路也比较好想,每个节点记录一个翻转标记flip,一个子节点数size,预先存好数组中第k大的数在原串中位置,建树时的下表就是这个位置数组(这个数组排个序,编个号就能求出来了

2013-09-20 19:50:11 967

原创 POJ3468 线段树||伸展树

线段树的模板题,先给一列数,然后给一些操作,Q操作查询[l,r]区间和,C操作把区间[l,r]全部加上C。最近在学伸展树,就重新把这题做了一下。用伸展树的话,以区间中间点为下表,区间和为键值建树,左孩子记左区间,右孩子记右区间。同时为了处理方便,引入编号为0和n+1的节点。每次操作时,把节点l-1伸展到根,把r+1伸展到根节点的右孩子,这样要处理的区间就被包含在根节点和他右孩子之间了,Q操作就直接

2013-09-20 13:23:19 740

原创 hdu4742 Pinball Game 3D

杭州网赛的1005,题意挺简单,每个球有x,y,z三个坐标,球i得三个坐标同事小于等于球j的坐标时,可以用i去撞击j,撞击后i消失,j继续去撞下一个球。问最多可以撞多少个球和有多少种不同的方法。比赛结束后也一直没什么好的思路,刚开始想着用拓扑排序去搞结果发现极限情况的边太多记录不下..后来看了 http://troysky.com/hdu-4742-pinball-game-3d/  这篇题解,又

2013-09-18 13:47:20 1151 2

空空如也

空空如也

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

TA关注的人

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