Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
AC 过100留念!//3007 Accepted 340K 219MS C++ 3656B //终于过了 ,用stl map 超时, //用自写的trie树 ,如果析构的话 ,就tle ,不析构的话,爆内存mle //最后还是用自写hash搞定!! //对字符串算hash ,因为str可以翻转,回旋 ,故 等间隔采样不适合! //如下为奇偶二维采样的结果 ,前项为占用的桶计数 ,后项样本大小,效率 //为 (hash/res) /*测试数据 8 aa abba abcd abcde abcdef abcdefg abcdabcdeabcabcdedefabbafgaa asdfweisalkasdfuioyuidhfskadhfuikljquidfkalzxcklvhui */ //输出 /* hash ,res : 1 1 hash ,res : 2 6 hash ,res : 4 12 hash ,res : 12 18 hash ,res : 4 24 hash ,res : 17 30 hash ,res : 8 152 hash ,res : 24 300 */ //此处采用无规律的prime序列采样,2 ,3 ,5 ,7 ,11... 因从0开始,故都减2 , //采样序列: //prime -2 , 101代表结束 //int primes[22]={0 ,1 ,3 ,5 ,9 ,11 ,15 ,17 ,21 ,27 ,29 ,35 ,39 ,41 ,45 ,51 ,57 ,59 ,65 ,69 ,71 ,101}; /*(效率大大提升!!!) hash ,res : 1 1 hash ,res : 3 6 hash ,res : 12 12 hash ,res : 13 18 hash ,res : 22 24 hash ,res : 20 30 hash ,res : 56 152 hash ,res : 260 300 */ //hash值的计算 ,采用 ^ 异或 (不进位的+)这样效率更快 ,但 a-z为96-121 ,a为 0110 0001 , //由a-z 跨度26 ,为2^5范围内 故仅取char的低5位作为有效hash值!! //这样最后的映射空间仅有32 ,空间太小 ,故再加 1 维采样,为 上一维的下一个元素序列 //这样 hash 空间大小 32*32,约为样本空间560的二倍 //hash存放的内容为一个下标,代表此对应桶的位置 //字符串的翻转,想了一整晚上,仍然摆脱不了o(n^2) 的限制!!,不过却也精简很多了! //空间占用为 0 ! //不知哪位大侠可有o(n) 的方法! /*for(i=1 ;i<len ;i++){ //generator 8 string!!! for(int j=0 ;j<2 ;j++){ reverseStr(s+i); reverseStr(s); reverseStr(s+len-i); reverseStr(s); } } */ Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator