
===字符串相关===
Loi_LXTT
这个作者很懒,什么都没留下…
展开
-
<codevs 1376> 帕秋莉·诺雷姬
·题目链接:http://codevs.cn/problem/1376/ –在计算的过程中一定要不断对m取模,否则会爆掉 –可以用数组直接统计26的n次方,O(1)查询,但一定要对m取模 –交换两个字母计算整个串的值时,不用重新求一遍sum,直接把sum减去两个原先的数乘以他们各自所在位置的26的幂,再加上他们乘以新的所在位置的幂 –虽然说有点像hash,但是我觉得这不是真的hash233原创 2017-09-25 17:02:13 · 525 阅读 · 0 评论 -
KMP算法:学习笔记
—一种字符串的快速匹配算法: 举个栗子: 找S2在S1中出现的位置: 正常的做法:先从第一个位置开始匹配,匹配到S2的最后一位时,发现不同,这时,把S2右移一位,再从头开始匹配,如图: 如此匹配下去,直到: 但是,我们可以看出,前面的三次匹配都是多余的,我们可不可以直接跳到这一步呢? ——KMP算法 我们一开始是匹配到最后一位d和a不同,也就是说,这之前的6位都是匹配的,在原创 2017-09-28 10:52:19 · 337 阅读 · 0 评论 -
<kmp>codevs 1404 字符串匹配
题面传送门以为是kmp的裸题(其实差不多233),结果调了半天,后来搜了题解才知道要怎么改。 在kmp算法的过程中,如果在每循环到i时,记ans[p]++。这个数组代表的意义是:到字符串A的第i个字符的最大匹配长度。但是,对于ans[nxt[p]],我们却没有作记录。所以在最后处理ans函数时,先倒序处理一遍(一定要倒序),这样才能累加。这样子处理出来的ans数组代表大于等于它的所有答案,最后的原创 2017-10-09 16:21:23 · 472 阅读 · 0 评论 -
2017.10.18 队内胡策 D5
昨天考的题,今天早晨才把T2调完,竟然卡了精度原题链接: T1:gjh自己出的(灵感来源:codevs 1742 爬楼梯 链接) T2:luogu 2656 采蘑菇 链接 T3:codevs 1456 隐藏口令 链接 T4:luogu 1984 烧水问题 链接T1 第一问DP,第二问随便打打贪心 结果我第二问贪心在模拟的过程中就打次了(第一次贪心模拟输给了DP)不多说 很简单 代码:原创 2017-10-19 10:28:55 · 354 阅读 · 0 评论 -
<序列DP>codevs 2980 买帽子
–我也不知道这是什么类型的动态规划 –题目链接:http://codevs.cn/problem/2980/ –求一个串的最长回文子串 –相当等于把一个串倒过来,求他们两个的lcs(最长公共子序列) –这个很好想,不多解释了,一些小细节问题在代码里 –dp数组不用开在每一个串的结构体里,反过来的串也不用,都各自开一个数组,每次清空就可以了,也不耗时 –dp[i][j]表示处理到原串的第i原创 2017-09-25 17:21:45 · 267 阅读 · 0 评论 -
【noip 2002】字串变换
去题面的传送门 BFS 很暴力很暴力,因为数据范围实在是太小了 wa在了hash上。 以后hash的底数还是选质数吧#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;const int mo=2333,e=301;int原创 2017-10-28 20:45:36 · 447 阅读 · 0 评论 -
【队内胡策 10.26 】T1
QAQ蒟蒻我只做了六十分的暴力,六十分很好水O(n)做法: 每到遍历一个字符,查找在该字符前的所有已经遍历过的字符里,该字符作为最小值时的答案,和该字符作为最大值时的答案。我们统计一下到第i个位置,每个字符各出现了多少次,即sum[j]。但是,我们还要知道对于以该位置结尾的,以前面任何位置开头的子串中的答案。从1到i遍历一遍肯定会超时,这时想用什么方法,能够快速找到位置x,使得区间[x,i]的答案原创 2017-10-26 17:04:46 · 350 阅读 · 0 评论