A. B-Suffix Array
题目描述:
给定一个字符串,只有 a
和 b
两种字符。对于该字符串的每一个后缀,求 B-function
然后排序,输出 $ [1-n] $ 对应起始位置的排名
$ B-function $ 规则
- If there is an index $ j<i $ where $ t_j = t_i $ , $ b_i = \min_{1 \leq j < i, t_j = t_i}\{i - j\} $
- Otherwise, $ b_i = 0 $ .
题解:
存在一个定理,反过来从后往前求,记作数组 $ c[i] $
- If there is an index $ j<i $ where $ t_j = t_i $ , $ b_i = \min_{1 \leq j < i, t_j = t_i}\{i - j\} $
- Otherwise, $ b_i = n $ .
- c[n + 1] = n + 1
举例说明,以样例为例
输入
1 | 5 |
输出
1 | 5 4 2 1 3 |
abaab
对应的 c
数组为 231556
c
数组的后缀为
后缀 231556
31556
1556
556
56
6
排名 2
3
1
4
5
6
$ sa $ 数组 3
1
2
4
5
6
直接倒序输出 $ sa $ 数组即可得到答案
显然需要使用数据结构后缀数组
下面是根据板子写的代码
• Detailed proof can be found in “Parameterized Suffix Arrays for Binary Strings
• http://www.stringology.org/event/2008/p08.html
代码:
1 |
|
B.
题目描述:
题解:
代码:
1 |
C.
题目描述:
题解:
代码:
1 |
D.
题目描述:
题解:
代码:
1 |
E.
题目描述:
题解:
代码:
1 |
F. Infinite String Comparision
题目描述:
For a string xxx, Bobo defines $ x^\infty = x x x \dots $ ,which is xxx repeats for infinite times, resulting in a string of infinite length.
Bobo has two strings aaa and bbb. Find out the result comparing $ a^\infty $ and $ b^\infty $ in lexicographical order.
You can refer the wiki page for further information of Lexicographical Order.
题解:
玄学定理,
因为两个字符串相同的话就是有两个循环节,因此就可以判断了
代码:
1 |
|
G.
题目描述:
题解:
代码:
1 |
H.
题目描述:
题解:
代码:
1 |
I. 1 or 2
题目描述:
一个图,无自环和重边, $ n $ 个点, $ m $ 条边
给出一个数组 $ 1 <= d[i] <= 2 $ ,是否可以选出一些边,满足第 $ i $ 个结点有 $ d[i] $ 条直接相连的边
题解:
假如所有点 $ d_i $ 都为 $ 1 $ ,那么就是一般图最大匹配问题
尝试将 $ d_i=2 $ 的点拆开,让他们各自找一个点匹配。那么就会有这样一个问题,由一个点拆开的两个点可能正好和另外两个由一个点拆开的点相匹配。所以我们不能将原边照搬,应当加以限制。
将一条边 $ e $ 拆成拆成两个点 $ e, e’ $ 按照题解中的方式连边。这样的话如果 $ e $ 和 $ e’ $ 匹配的话,出现矛盾,说明不选这条边,否则选这条边。这样问题就转化成了 $ d_i = 1 $ 的情况,可以使用一般图完美匹配做了。
直接套板子,注意点的个数发生了变化
代码:
1 |
|
J. Easy Integration
题目描述:
本质是个数学题
Given n, find the value of $ \int_{0}^1 (x - x^2)^n \mathrm{d} x $
It can be proved that the value is a rational number pq\frac{p}{q}qp.
Print the result as $ (p \cdot q^{-1}) \bmod 998244353 $ .
因为是多个样例输入,一直以为是打表,然后计算。最后发现是个数学题。
题解:
可以使用 $ n $ 次分部积分或者瓦里斯公式得到结果
代码:
1 |
|