04 2020 档案
摘要:完美K倍子数组 错误原因: 当一个数过大时存map时需要考虑的时候将其取余然后在输入的时候就遍历掉,单独遍历map是不科学的 思路: 1.k的倍数类 2.非k的倍数但是两个数加起来是k的倍数比如2k+3和3k+(k-3) 3.对k取余后是k的一半 #include <iostream> #inclu
阅读全文
摘要:解线性方程 HDU-2669 Romantic 题意: 求ax+by=1的一组x,y,且x为最小的非负值 思路: 由于gcd等于1,所以判断gcd,如果gcd不等于则方程无解 直接上exgcd即可 #include <iostream> #include<algorithm> #include <c
阅读全文
摘要:扩展欧几里得 在讲欧几里得之前我想写说gcd,因为在我学习exgcd时候没有深刻理解递归gcd导致看了很长时间的exgcd的都代码才懂 辗转相除 在辗转相除的应用中我们可以知道的是gcd(a,b)=gcd(b,a%b);然后层层递归求得当b=0时候的解 贝祖定理 当a,b∈Z,那么一定存在x,y
阅读全文
摘要:Aizu ALDS1_6_D Minimum Cost Sort 直接排序太简单了,我们来考虑一下排序的代价,对于一个长度n的由非负整数组成的数组,我们用交换法排序,每次可以交换任意两个元素,而交换的代价,是这两个元素之和,求出排序的最少交换代价,保证数组里没有两个元素相同且元素值小于等于10000
阅读全文
摘要:Trie树 概要: 字典树算法主要是对字符串进行处理,最后形成形如下图的trie树 字典树主要用来查询前缀出现次数,字符串以前缀代表,查找单词,对某个单词的操作和询问 在形成字典树的时候遵循的原则: 1.根节点0不标记如图所示,单词是否出现以单词的下个节点来作为判断如果上所示的'$',实际上也就是每
阅读全文
摘要:题意: 取一字符串不相交的前缀和后缀(可为空)构成最长回文串。 思路: 先从两边取对称的前后缀,之后再取余下字符串较长的回文前缀或后缀。 讲解: 这道题主要是需要考虑的情况太多,比如说只有一个字符的情况下我是用if来判断输出还是用以下这种解法 这个解法的巧妙之处就是在于不用考虑是几个字符,因为在输出
阅读全文
摘要:Manacher算法-又叫马拉车算法 概要: Manacher算法主要用于求最长回文串,在求最长回文串的时候做了处理使长度均变成了奇数 处理方式:s[0]='$',从s[1]开始两边都有其他符号 然后用一个数组 P[i] 来记录以字符S[i]为中心的最长回文子串向左/右扩张的长度(包括S[i],也就
阅读全文
摘要:一:Kmp算法 概要: Kmp算法中nxt数组为重要组成部分,nxt数组所存的内容为:next[i]表示前i个字符组成的子串的最长相同前缀和后缀的长度,要注意应用中提出的nxt[i]变化(方便在匹配两个字符串时候跳动减少时间复杂度) nxt数组模板: 以i=1为起点的字符串进行处理 void get
阅读全文

浙公网安备 33010602011771号