上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 56 下一页
摘要: 给m个子串,求长度为n的不包含子串的母串数,最直接的应该是暴搜,肯定tle,考虑用ac自动机 将子串建成字典树,通过next表来构造矩阵,然后用矩阵快速幂求长度为n的数量 邻接矩阵https://wenku.baidu.com/view/d7b9787f1711cc7931b716b0.html 对 阅读全文
posted @ 2017-09-21 16:35 walfy 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 傻逼多组测试,想了很久不知道为什么wa,结果是多组测试 ac自动机很多时候就是对End数组的操作,这题是用End数组记录末尾的字符串,query的时候sum综合一下End数组 #include<bits/stdc++.h> #define fi first #define se second #de 阅读全文
posted @ 2017-09-19 18:32 walfy 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 这题还是ac自动机裸题,只不过就是格式很烦人 有几个坑点:输入可能有空格,ascll可见字符从32开始到126有95个 wa点,用string输入,不能含空格,用scanf输入字符数组时没有memset,每次计算set里面的末尾值之后就清空了 #include<bits/stdc++.h> #def 阅读全文
posted @ 2017-09-19 16:28 walfy 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 貌似字典树也能过,原理不多赘述了,主要就是字典树+kmp 设匹配串长度为n,模式串共m个,第i个记为si。 时间复杂度为O(n+∑mi=1length(si))。 ac自动机大致就是用字典树存下每个分串,再处理出fail数组,最后根据母串和fail数组进行逐一匹配 在对fail数组进行处理的时候,f 阅读全文
posted @ 2017-09-18 19:43 walfy 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 很久之前刷的专题,今天准备学ac自动机打算复习一下,突然发现博客里没有= = 所以把模板拉过来 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include< 阅读全文
posted @ 2017-09-18 15:44 walfy 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 题目大意就是给两个长度相同的字符串,每次操作能使一段变成相同的一个字符,要求是串1变成串2的最小操作数目 (先假设从一个完全不相同的字符串变成串2)先用区间dp求出任意两点之间的最小操作数,dp[i][j]是i到j 的最小操作数 然后用一个数组求串1到串2的最小操作数,对于某一点,如果s[i]==p 阅读全文
posted @ 2017-09-14 16:43 walfy 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 转移方程:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k+1][j]+(sum[j]-sum[k])*(k-i+1)+a[i]*(k-i)); 一开始思路好像出了一点问题,我是考虑每次更新时把k放到第j个位置,然后k+1到j整体前移,但是不知道错在哪里了, 正解是,对于转 阅读全文
posted @ 2017-09-14 10:16 walfy 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 转移方程是dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+mul[i][k][j]); k是中间的那个数,每次更新k的值 #include<map> #include<set> #include<cmath> #include<queue> #include<stac 阅读全文
posted @ 2017-09-14 10:12 walfy 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 对于这一题想了很久真的是一点头绪也没有,还有组数明明是200,数据范围100,O(n^3)的复杂度居然不会爆掉(可能是因为一直在想怎么用O(n^2)的复杂度做这题 做法是先预处理dp,对于dp[i][i]只能等于1,因为dp数组代表i到j的最小带的衣服数量,从下至上更新 对于每一次的dp[i][j] 阅读全文
posted @ 2017-09-12 19:04 walfy 阅读(170) 评论(0) 推荐(0) 编辑
摘要: poj不支持bits/stdc++.h这个头文件就很坑,区间dp,第一重循环是长度,第二重是起点,第三重是遍历起点到终点 dp[i][j]代表i到j最大匹配数目,每次枚举了起点之后判断一下是否出现了()【】匹配 复杂度O(n^3) #include<map> #include<set> #inclu 阅读全文
posted @ 2017-09-11 15:51 walfy 阅读(124) 评论(0) 推荐(0) 编辑
上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 56 下一页