- 博客(7)
- 收藏
- 关注
原创 HDU-2896-AC自动机
题目大意:很裸的AC自动机,就是要按照模式串的先后顺序输出; 题目解析:只需要在tire树上每个节点加上一个end,表示当前结束的是哪一个模式串,之后query的时候记录下来,最后扫一遍O(n); AC代码: #include #include #include #include #include using namespace std; const int N = 510; co
2017-09-19 22:10:32 308
原创 HDU-2222-AC自动机
题目大意:就是给定若干个模式串,求它们在匹配串中出现的个数; 题目解析:AC自动机的模板题,用来保存模板; AC代码: #include #include #include struct Node { int cnt;//是否为该单词的最后一个结点 Node *fail;//失败指针 Node *next[26];//Trie中每个结点的各个节点 }*queue[50000
2017-09-19 16:31:12 343
原创 POJ-3261-后缀数组
题目大意:求可重叠的出现k次最长重复子串的长度; 题目解析:首先二分答案,问题转化成了有没有出现k次以上并且长度大于mid的子串,这样贪心O(N)在height数组里面扫一遍就好了; AC代码: #include #include #include using namespace std; const int MAXN = 200005; char ch[MAXN], All[M
2017-09-12 16:00:34 185
原创 POJ-2774-后缀数组
题目大意:给定两个字符串,求他们的最长连续子串; 题目解析:先用分隔符把两个字符串拼接在一起,然后求一下后缀数组,枚举height,如果发现i,i-1分别在分隔符的左边和右边,就更新最大值; AC代码: #include #include #include using namespace std; const int MAXN = 200005; char ch[MAXN], A
2017-09-11 16:01:02 202
原创 BZOJ-3944-杜教筛
题目大意: 题目解析: 杜教筛科普: 前面那项需要快速求解,最好O(1),后面那项可以dfs求解; AC代码: #include #include #include #include #include #include using namespace std; #define N 5000000 #define LL long long int T,n;
2017-09-03 16:06:59 370
原创 HDU-1695-莫比乌斯
题目大意:求在a 题目解析:跟上题一样,只不过要开ll,而且需要减去重复的,只要减去cal(b,b)/2即可; AC代码: #include #include using namespace std; typedef long long ll; #define MAXN 100010 int a,b,c,d,k,p[MAXN+10],pcnt,n; ll ans,sum[MAXN+10],m
2017-09-01 23:08:28 249
原创 BZOJ-2301-莫比乌斯
莫比乌斯反演; 形式一: F(n)=∑d|nf(d)=>f(n)=∑d|nμ(d)F(nd) 形式二: F(n)=∑n|df(d)=>f(n)=∑n|dμ(dn)F(d) 题目大意:求在a 题目解析:满足gcd(x,y)是k的(x,y)的对数也等价于1 令f(i)表示满足gcd(x,y)=i时(x,y)的对数,F(i)表示满足i|gcd(x,y)的(x,y)的对数, F(i
2017-09-01 22:37:27 314
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人