上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 30 下一页

2015年2月2日

hdu4333 扩展KMP

摘要: 一次将第一个数放到最后一个,求所有不同的数中比原串小的个数,等于个数,大于个数思路:将原串贴在后面,求一遍与原串的EXKMP,然后利用extendif extend[i]>=len 等于原串else if s[i+extend[i]]>s[i] 大于原串else 小于原串然后利用KMPdenext数... 阅读全文

posted @ 2015-02-02 23:52 xiao_xin 阅读(90) 评论(0) 推荐(0) 编辑

hdu4300 扩展KMP

摘要: 题意好难懂==给定26个是a-z的密文,然后将给定的字符串符合密文+对应明文的最短串输出注意到前(len+1)/2肯定是密文,然后翻译成明文与后面进行EXKMP只要extend[i]可以到达末尾即为最小,再加上后面翻译即可 1 #include 2 #include 3 #include 4 usi... 阅读全文

posted @ 2015-02-02 23:44 xiao_xin 阅读(94) 评论(0) 推荐(0) 编辑

扩展KMP模板(下标从0开始)

摘要: 扩展kmp求得是:S,Tentend[i]表示S中i开始的后缀与T最长公共前缀暂时没用从1下标开始的扩展KMP,下次补坑== 1 void EKMP(char s[],char t[],int lens,int lent) 2 { 3 int i,j,p,l,a; 4 next[0]=len... 阅读全文

posted @ 2015-02-02 23:31 xiao_xin 阅读(110) 评论(0) 推荐(0) 编辑

kmp模板

摘要: 来自matrix67,很好用很好理解 1 int find(char *A,char *B,int n,int m) 2 { 3 int i,j=0; 4 for (i=1;i0&&B[j+1]!=A[i]) j=next[j]; 7 if (B[j+1]==A[i]) j++; 8... 阅读全文

posted @ 2015-02-02 02:39 xiao_xin 阅读(89) 评论(0) 推荐(0) 编辑

hdu1841 kmp(用最短的串使包含存在的两个串)

摘要: 1.大的包含小的,求kmp即可2.一个串的前缀是另一个串的后缀,合并利用next数组 1 #include 2 #include 3 char s1[1000005],s2[1000005],t1[1000005],t2[1000005]; 4 char s[2000005]; 5 int next... 阅读全文

posted @ 2015-02-02 02:38 xiao_xin 阅读(79) 评论(0) 推荐(0) 编辑

hdu2594 求s1前缀与s2后缀最长重合串

摘要: 还是没能熟练掌握巧妙的next数组,把s2接到s1后面,求next数组当next[n]>a||next[b]>b继续求next直到为0或者不满足这两种此时next[n]值就是最大重复串 1 #include 2 #include 3 int next[100005]; 4 char s1[10000... 阅读全文

posted @ 2015-02-02 01:30 xiao_xin 阅读(132) 评论(0) 推荐(0) 编辑

2015年2月1日

hdu1358 循环超过两节的字符串(next数组)

摘要: if (i%(i-next[i])==0&&i/(i-next[i])>1)循环次方=i/(i-next[i]) 1 #include 2 #include 3 int n,next[1000005]; 4 char s[1000005]; 5 void getnext() 6 { 7 int ... 阅读全文

posted @ 2015-02-01 17:09 xiao_xin 阅读(102) 评论(0) 推荐(0) 编辑

hdu3336 dp+求next数组

摘要: dp[i]=dp[next[i]]+1;//dp[i]表示以i结尾能和前面多少前缀匹配,思考ans=sum{dp[i]} 1 #include 2 #include 3 #include 4 using namespace std; 5 int m,dp[200005],next[200005]; ... 阅读全文

posted @ 2015-02-01 16:08 xiao_xin 阅读(88) 评论(0) 推荐(0) 编辑

2015年1月24日

CodeForces 507D 数位dp(n位的数满足该数的一个后缀是k的倍数有多少个)

摘要: 灵活!首先,需要从后向前dfs,因为后缀。然后,不用再加limit了,但是在特殊的位置要知道该位加的是0还是1。这样的话,记住后缀mod k的值,就很好dfs了。dfs(pod,preMOD,flag) 1 #include 2 #include 3 int dp[1005][105][2],shi... 阅读全文

posted @ 2015-01-24 04:53 xiao_xin 阅读(410) 评论(0) 推荐(0) 编辑

2015年1月19日

hdu4607 树直径(两次dfs求向下最远距离及另一方向最远距离相加)

摘要: 之前有想过树的直径咋求,不过一直没仔细去考虑。昨天做了hdu2196 今天突然想到如果把max(up[i]+dis1[i])求出来不就是直径maxx嘛==随后百度了一下看到别人大多数是两次bfs,我从hdu上找了一道题目,果然是可以的。思想应该是一样的吧,都是求两条最长路。这题用到最长路还有:1.k... 阅读全文

posted @ 2015-01-19 16:25 xiao_xin 阅读(136) 评论(0) 推荐(0) 编辑

上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 30 下一页

导航