
ACM
flinkstar
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
D. Ralph And His Tour in Binary Country
传送门http://codeforces.com/problemset/problem/894/D给出一个平衡的二叉树,带边权,每组询问等价于求到A点距离不超过H的所有点到A点的距离和。思考为什么是“平衡二叉树”,其具有层数不超过logn,只有每个节点最多有两个子的特点。 对每个点将其子树所有点到该点的距离维护成一个有序表,由于是静态的,排序即可。之后就可以使用lower_bound去找有多少个点原创 2017-11-22 01:07:26 · 392 阅读 · 0 评论 -
[UVa 12338] Anti-Rhyme Pairs (字符串哈希+二分)
链接UVA 12338题意对每个case,给出N个单词(字符串),之后有Q组询问,对每组询问(i, j),给出第i个字符串和第j个字符串的最长公共前缀长度。思路这是一个典型的字符串哈希问题。字符串有很好的单调性,可以使其在匹配问题上结合二分提高效率。比如本问题,找两个字符串最长公共前缀,如果前缀j匹配,那么前缀i(i < j)一定是匹配的,利用二分能很快找到最长匹配的长度。 代码用了自然溢出哈希,原创 2016-08-30 19:05:34 · 491 阅读 · 0 评论 -
[POJ 2774] Long Long Message (字符串哈希+二分)
链接POJ 2774题意给出两个字符串,寻找其最长公共子串。 注意字符串的长度较大,100000。思路字符串哈希典型问题,寻找N个字符串的最长公共子串。对于N个长度不超过L的字符串,哈希可以在O(N*L*log(L))内解决此问题。本题N为2。 做法是对长度进行二分,对每个长度len,可以在线性时间内求出字符串s1中所有长度为len的哈希值,把这些哈希值存在哈希表中。同样对s2求出其长度为len原创 2016-08-30 19:32:51 · 894 阅读 · 0 评论 -
[HDU 4080] Stammering Aliens (字符串哈希+二分)
链接HDU 4080题意每组数据为一个整数m和一个长度不小于m的字符串,求该字符串的一个子串,该子串在满足出现次数不小于m的同时应尽量长。 输出该长度和最右侧出现的起始位置。如果存在多组数据,输出有最靠近右侧的那组。思路关于子串和长度的题目仿佛都可以用字符串哈希+二分来水一水。 这题仍然是字符串哈希的题目,对这个字符串求哈希,然后二分长度,枚举对应长度的子串哈希。每个哈希值要存储在哈希表里并记录原创 2016-08-30 20:14:27 · 2524 阅读 · 0 评论 -
[POJ 1743] Musical Theme (字符串哈希+二分)
链接POJ 1743题意给出一个序列,元素范围1到88,求出最长连续子序列长度,满足该序列(或该序列的逆序)在序列中出现过至少2次并且不相交(没有公共部分)。思路又是子串+长度问题,可用哈希+二分解决。 把序列看做字符串,字符集是1到88,对字符串正序逆序求哈希,二分长度len,从左向右枚举长度为len的子串。这时候需要对正序的子串和相同位置的逆序子串同时枚举。枚举后判断是否出现过且不相交,没出现原创 2016-08-30 20:59:07 · 558 阅读 · 0 评论 -
[POJ 3974] Palindrome (字符串哈希+二分)
链接POJ 3974题意给出字符串,求其最长回文子串的长度。思路该题目可用manacher算法在O(n)时间内解决。 最长回文子串,也是子串+长度类型的问题,此处使用字符串哈希+二分解决。 对字符串进行正序倒序两次哈希,之后二分长度,对每个长度len枚举子串的哈希值,判断相同位置的子串正逆序哈希值是否相同,相同则代表为回文串。 复杂度O(n*log(n))。代码#include <cstdio原创 2016-08-30 21:05:59 · 666 阅读 · 0 评论 -
[HDU 5536] Chip Factory (trie树+异或)
链接HDU 5536题意给出n个数(n >= 3),求n个数中任意三个不同的数a、b、c的(a + b) ^ c的最大值。题解一种trie树的经典用法,和异或操作结合求最值的问题。 将输入的数二进制化后,全部存在trie树中(注意补齐到31位),然后枚举a和b,在trie树中寻找相应的c即可。 由于要满足a、b、c不同,在选定a、b后需要将他们的二进制串从trie树中消除,得出结果后再添加进去,原创 2016-10-07 16:26:43 · 371 阅读 · 0 评论 -
[POJ 2406] Power Strings (kmp循环节)
链接POJ 2406题意给出一个字符串,输出其最短循环节长度。题解首先说一下循环节,其实每个字符串都是有循环节的,最长的循环节就是它本身。 如果一个字符串s可以写成某个字符串d复制k次得到的,那么d就是s的循环节,最短循环节就是d中最小的一个。其实这题是很容易解的,我们对该字符串s求next数组,相当于得到了所有与s后缀匹配的真前缀,一一检测即可。 但是总结这题主要是为了一个结论,其实无需求出所原创 2016-09-29 16:31:00 · 431 阅读 · 0 评论