题目大意:给定一个字符串,求按照题中所给的压缩方式最短能压缩到多长
区间DP 令f[i][j]表示[i,j]区间内的字符串最短能压缩到多长
普通的区间DP:f[i][j]=min{f[i][k]+f[k+1][j]} (i
此外如果对这段字符串进行压缩,那么我们可以枚举循环节,用Hash来判断
如果k是一个循环节,那么有f[i][j]=min(f[i][j],f[i][i+k-1]+dig...
分类:
其他好文 时间:
2015-01-23 21:41:23
阅读次数:
183
题目大意:给出一个置换群,求有多少种本质不同的染色方案。
思路:Burnside引理:置换群的等价类数目=所有置换的不动点数目的平均值。
有了这个引理,我们只需要求出所有不动点的数目求一个平均值就可以的到等价类的数目了。
要使一种染色的方案在一种置换的意义下是不动点,需要让这个置换的每个循环节中的颜色都相同。先求出所有置换的循环,然后用一个背包就可以初解了。最后乘法逆元搞一下除法。
...
分类:
其他好文 时间:
2015-01-23 09:34:44
阅读次数:
213
题目大意:给出一个A~Z的置换G,问能否找到一个A~Z的置换G' 能够用来表示为 G = G'*G'由定理:任意一个长为 L 的置换的k次幂,都会把自己的每一个循环节分裂成gcd(L, K)份,并且每一份的长度都为L/gcd(L,K)这里是置换的平方,所以G'长度为偶数的循环节必然会分裂为两个相等的...
分类:
其他好文 时间:
2015-01-22 14:48:05
阅读次数:
171
题目大意:给出一个A~Z的置换G,问能否找到一个A~Z的置换G' 能够用来表示为 G = G'*G'由定理:任意一个长为 L 的置换的k次幂,都会把自己的每一个循环节分裂成gcd(L, K)份,并且每一份的长度都为L/gcd(L,K)这里是置换的平方,所以G'长度为偶数的循环节必然会分裂为两个相等的...
分类:
其他好文 时间:
2015-01-22 13:11:09
阅读次数:
149
就觉得这题的暴力解法时间复杂度应该会很高,可能循环节会比较小吧 比较好的收获就是这个Floyd判环法 #include #include #include #include using namespace std;typedef long long LL;const int maxn = 1...
分类:
其他好文 时间:
2015-01-22 12:44:49
阅读次数:
178
题目大意:给定一个字符串,多次询问某一子串的循环节
首先循环次数一定是子串长度的约数
因此我们可以枚举子串长度的约数进行验证
验证时选择Hash,验证[x,y-len]和[x+len,y]这两段是否相等,O(1)即可出解
但是这样做总复杂度是O(q√n)的,会T
考虑一个优化,设某个字母在子串中出现了k次,那么循环次数一定是k的约数
因此我们取每个字母在子串中出现次数的Gcd,枚举这个...
分类:
其他好文 时间:
2015-01-20 13:48:45
阅读次数:
234
Sort a linked list using insertion sort.链表插入排序,和数组插入排序类似,但是不需要移动元素,从前向后比较并插入即可。内外两层循环,时间复杂度O(n^2)1、使用dummy节点。 2、为便于插入,pre指针指向外层循环节点 1 ListNode *insert...
分类:
其他好文 时间:
2015-01-15 00:15:03
阅读次数:
272
题目描述:给出一个小数的分子和分母,将这个小数转化成string类型表示的小数形式当小数出现循环时,用小括号将循环节括起来题目分析:这个题目重点是找到循环节对于存在循环节的情况,找到循环节是重点,我们 当什么情况下循环节完整的出现出现了呢? 我们不断的做除法,每次都会有一个余数,如果当前的余数在.....
分类:
其他好文 时间:
2015-01-14 00:50:21
阅读次数:
229
找循环节水题。注意余数大于0。 1 /* 2802 */ 2 #include 3 #include 4 #include 5 6 #define MAXN 4018 7 #define MOD 2009 8 9 __int64 a[MAXN+1];10 11 void init() {...
分类:
其他好文 时间:
2015-01-09 12:24:12
阅读次数:
134