- 博客(12)
- 资源 (2)
- 收藏
- 关注
原创 Codeforces Round #539 Sasha and a Bit of Relax(异或)
题目 https://codeforces.com/contest/1113/problem/C 题意 给你一个数列 求有多少区间满足 1 长度为偶数 2 前一半异或值等于后一半异或值 思路 前一半异或值等于后一半异或值 那么这个区间异或值为0 只需找前缀异或相等且长度为偶数即可 (即奇数位和奇数位) #include <bits/stdc++.h> using na...
2019-02-25 19:32:10 200
原创 Codeforces Round #538 C. Trailing Loves (or L'oeufs?)(求 n! 转化为 b 进制下末尾有多少个 0.)
题目 https://codeforces.com/contest/1114/problem/C 思路 求 n! 转化为 b 进制下末尾有多少个 0. 解题思路: 原题:swjtuOJ 2090 这是一道很好的数论题。 首先转换一下思路: 要求 n! 在 b 进制下有多少个尾 0 就相当于 求 n! % (b^k) == 0 的最大 k。 那么我们现在把 n! 看作一个数 A。问题...
2019-02-22 15:05:24 524
原创 CA Loves Palindromic HDU - 5658 (回文树)
题目 https://cn.vjudge.net/problem/HDU-5658 题意 给定一个串,询问l到r右多少本质不同的回文串。 思路 回文树加暴力 #include <iostream> #include<bits/stdc++.h> using namespace std; const int MAXN = 1005 ; const int N = ...
2019-02-20 15:05:11 130
原创 The Number of Palindromes HDU - 3948 (回文树)
题目 https://cn.vjudge.net/problem/HDU-3948 题意 求出本质不同的回文串个数。 思路 回文树 #include <iostream> #include<bits/stdc++.h> using namespace std; const int MAXN = 210005 ; const int N = 26 ; struct...
2019-02-20 15:02:43 184
原创 回文树模板
const int MAXN = 210005 ; const int N = 26 ; struct Palindromic_Tree { int next[MAXN][N] ;//next指针,next指针和字典树类似,指向的串为当前串两端加上同一个字符构成 int fail[MAXN] ;//fail指针,失配后跳转到fail指针指向的节点 long long c...
2019-02-20 15:01:03 203
原创 The Problem to Slow Down You UVALive - 7041 (回文树)
题目 https://cn.vjudge.net/problem/UVALive-7041 题意 求两个串的公共回文串的个数。 思路 DFS两个回文树 #include <iostream> #include<bits/stdc++.h> using namespace std; const int MAXN = 210005 ; const int N = 2...
2019-02-20 15:00:27 247
原创 Long Long Message POJ - 2774 (后缀数组求最长公共子串)
题目 https://cn.vjudge.net/problem/POJ-2774 题意 给你两串字符,要你找出在这两串字符中都出现过的最长子串 思路 先用个分隔符将两个字符串连接起来,再用后缀数组求出height数组的值,找出一个height值最大并且i与i-1的sa值分别在两串字符中就好了 #include<iostream> #include<cstring&g...
2019-02-17 10:11:17 266
原创 Power Strings POJ - 2406 (KMP求最小循环节)
题目 https://cn.vjudge.net/problem/POJ-2406 题意 用next数组求出整个数组的最大前缀,如果整个串是用循环节组成的,那么 n - next[n] 也就是最小循环节,验证最小循环节会被n整出。 思路 利用KMP算法,求字符串的特征向量next,若len可以被len - next[len]整除,则最大循环次数n为len/(len - next[len])...
2019-02-17 10:05:36 199
原创 Milk Patterns POJ - 3261 (后缀数组求可重叠的最长重复子串)
题目 https://cn.vjudge.net/problem/POJ-3261 题意: 求可重叠的最长重复子串,但有一个限制条件。。要至少重复k次 思路 只需要求 height 数组 里的最大值即可。首先求最长重复子串,等价于求两个后缀的最长公共前缀的最 大值。因为任意两个后缀的最长公共前缀都是 height 数组里某一段的最小值, 那么这个值一定不大于 height 数组里的最大...
2019-02-17 10:03:04 247
原创 Musical Theme POJ - 1743 (后缀数组求不可重叠最长重复子串)
题目 https://cn.vjudge.net/problem/POJ-1743 题意 给定一个字符串,求最长重复子串,这两个子串不能重叠。 思路 这题比上一题稍复杂一点。先二分答案,把题目变成判定性问题:判断是否 存在两个长度为 k 的子串是相同的,且不重叠。解决这个问题的关键还是利用 height 数组。把排序后的后缀分成若干组,其中每组的后缀之间的 height 值都 不小于 k。例...
2019-02-17 09:58:49 201
原创 后缀数组模板
typedef long long ll; const int maxn = 200010; int cntA[maxn],cntB[maxn],sa[maxn],tsa[maxn],A[maxn],B[maxn],height[maxn]; int Rank[maxn]; ll n; char ch[maxn]; void solve() { for(int i = 0;i < ...
2019-02-16 10:07:11 154
原创 拓展KMP模板
const int N = 1e6 + 10; typedef long long ll; char s1[N],s2[N]; int nex[N],extend[N]; void get_next(char s[]) { int len = strlen(s); nex[0] = len; int mx = 0,id; for(int i = 1;i <...
2019-02-16 10:05:58 109
ACM国际大学生程序设计竞赛:知识与入门 俞勇
2018-08-29
ACM国际大学生程序设计竞赛:算法与实现 俞勇
2018-08-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人