http://www.lydsy.com/JudgeOnline/problem.php?id=3990DFS好吧,表示不会做。发现对于这些搜索的题我比较弱,看来需要加强一下。回归正题。我们发现对于一个操作方案(不妨记操作数为$cnt$),我们任意改变操作的顺序,总可以满足条件。根据最小表示法的原理...
分类:
编程语言 时间:
2015-09-05 11:04:47
阅读次数:
369
题意:给一个字符串,求它的最小子串,使得原串是通过它重复得到的字符串的一个子串。思路:先求最小长度,最小循环长度可以利用kmp的next数组快速得到,求出长度后然后利用字符串最小表示法求循环节的最小表示即可。#pragma comment(linker, "/STACK:10240000")#inc...
分类:
其他好文 时间:
2015-08-27 02:11:21
阅读次数:
173
#include#include#define maxn 10010char s[maxn];int getmin(){ int i,j,k,len=strlen(s); i=0; j=1; k=0; while(i0) i+=k+1; ...
分类:
其他好文 时间:
2015-08-12 16:24:16
阅读次数:
102
HDU 4193
题意:给n个数字组成的序列(n
思路:
这题看到数据规模觉得只能用最多O(nlogn)的算法,然后想到了之前刚做过的有关最小表示法的题,但还没证明出一个做这题有效的算法出来。
后来看过题解,发现用的最多的方法是单调队列,然而我对这个知识点知之甚少orz
/*科普君:from单调队列
单调队列是指:队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只...
分类:
其他好文 时间:
2015-07-27 00:24:41
阅读次数:
158
HDU 4162
题意:
给一个数字串(length
思路:
第一步是将差分码求出:s[i] = (s[i] - s[i+1] + 8) % 8;
第二步是求出最小字典序的循环同构差分码,我之前没注意到字符串规模。。直接用set做,MLE+TLE。。。
正确的方式应该是一种O(n)的解法,即最小表示法。//关于最小表示法的证明与详述请参考最小表示法:)
最小表示法算法:
初...
分类:
其他好文 时间:
2015-07-25 23:09:03
阅读次数:
462
题意:
给出两个相同长度的数字串;
求两个串是否本质相同,相同则输出最小表示;
长度L似乎给的不对,大概是2000000左右吧;
题解:
最小表示法裸题,证明正确性啥的详见论文吧;
这东西大体的思路就是两个指针扫;
相同则累加k,不同就向后跳k+1个;
因为前面那段相同所以就可以由另一个指针去扫,来节约时间;
O(n)这个很显然咯,就一个for循环(笑);
并且每个数都...
分类:
其他好文 时间:
2015-07-20 16:25:13
阅读次数:
106
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3374题意:给出字符串,求最小表示法和最大表示法,并输出有几次出现,其实就是最小循环节的个数题解:最小表示法求解,KMP求解最小循环节 最小循环节 = len - Next[len] 个数必须整出,如不整...
分类:
其他好文 时间:
2015-07-19 16:17:44
阅读次数:
81
最小表示法:当给定一个字符串时,求它最小表示的情况,比如:baab 最小表示情况为: aabb 即把第二位置的a变成第一个位置。最大表示法:比如 abcd 最大应为:dabc 基本概念和最小表示法相同。时间复杂度:o(n)应用:比较两个环形串是否是同一字符串、判重、判同分异构等。方法:使用两个指针(...
分类:
其他好文 时间:
2015-07-19 16:15:07
阅读次数:
90
循环字符串最大最小表示法模版定义字符串abcde和cdeab同构,因为abcde转两格即为cdeab,该字符串称为循环字符串。循环字符串的字典序最小的同构字符串称为最小表示,最大表示同理。这里只给模版,以后再深究。int getMin(char *s) ///返回首位置{ int n=strl...
分类:
其他好文 时间:
2015-06-29 00:22:39
阅读次数:
309
题目大意:给定一个字符串,可以把一段尾部接到头部,这样找到一个最小的字符串方案一:利用循环同构中找最小表示的方法来解决论文参考http://wenku.baidu.com/view/438cad13a2161479171128b6.html 1 #include 2 #include 3 #in.....
分类:
其他好文 时间:
2015-06-11 14:17:52
阅读次数:
118