昨晚打了一场比赛……感觉不太难的?(E题除外)
还事撸一篇题解罢?
A
Description
懒得写了……(逃
Solution
贪心且尽量选最大的,然后没了……
Code
1 |
|
B
Description
还事懒得写……(逃
Solution
如果你自己试过的话会发现尽量均分事很合理的……证明啥的画画函数图像就行了(逃
Code
1 |
|
C
Description
给定一自然数序列\(a\),选出一个子序列\(b\)使得\(b\)中所有元素按位与的lowbit
尽可能大。要求你输出这个\(b\)。
此外,如果有多解那么取一个\(b\)尽可能长的。
\(n\leq 10^5,a_i<2^{31}\)。
Solution
我们可以枚举那个lowbit
是哪一位,然后我们至少要保证\(b\)中每个元素都含有这一位。
然后我们要求按位与起来更低的位都要是0。然后我们知道参与按位与运算的元素越多,每一位就不可能会变大。那么只要取出所有含有我们要求的那一位元素构成\(b\),还是有更低位元素为1的话,那么我们枚举的这一位就一定不是答案了。
更好的性质是,这种方法是一定能保证\(b\)尽可能长的。
Code
1 |
|
D
Description
给你一个由\(a\ldots i\)为组成字符的字符串\(S\)(\(|S|\leq 3000\)),求有多少abcdefghi
的排列使得该排列为\(S\)的子序列。
Solution
我们考虑枚举排列再判定吧。
我们直接搞出来\(S\)的子序列自动机,然后再扔进去一遍就行了。子序列自动机也不难,你每个点的每种字符的边往他后面第一次这个字符出现的地方连就行。
Code
1 |
|
E
Description
给定正整数\(n, x\),要你求一个最大的\(b\)满足\(1<b<x\),且在\(b\)进制下存在一个长为\(n\)的正整数\(a\)(允许有前导0),满足把\(a\)的\(b\)进制表示看成一个序列之后,做出来的\(n\)种循环位移互不相同,且分别可以由\(a\cdot l(1\leq l\leq n)\)得到。
\(n\leq 5\cdot 10^6,x\leq 10^9\)。
Solution
可以书事最难的题力,,,
我们考虑那个\(a\)吧,就当\(b = 10, a = 142857\)来说,构造一个小数\(c\)满足: \[ c = 0.\overline{142857} \] 这个东西既然是个小数,那么一定可以表示为一个分数\(\frac{p}{q}(p\perp q)\)。然后我们发现如果\(a\)合法,那么\(a\cdot b^l(0\leq l < n)\)的小数部分组成的集合和\(a\cdot l(1\leq l\leq n)\)组成的集合事完全一致的。
小数部分显然只会由分子模\(q\)的结果决定,那么上面的结论就等价于\(p\cdot b^l(0\leq l < n)\)组成的集合和\(p\cdot l(1\leq l\leq n)\)组成的集合事一致的。而\(p^{-1}\bmod{q}\)存在,那么给两个集合都乘上这玩意,那么就得到了\(b^l(0\leq l < n)\)和\(l(1\leq l\leq n)\),然后就会发现\(b\)的这若干次幂和\(Z_{n + 1}\)中的正数一一对应……换言之\(b\)为\(n + 1\)的原根且\(n + 1\)必须为质数。
找原根的话直接枚举判定就行了……要知道原根很密集的(逃
Code
1 |
|
F
Description
给一颗\(n\)个点的以1为根的树,每次随机选择剩下点中的一个将其子树删掉,等没点了游戏终止。
求期望删除次数。
Solution
怎么感觉是一道经典题……
根据期望线性性,我们考虑每个点对答案的贡献。
每个点首先他和他祖先中势必会有一个点被删除,要是祖先被删了那也没它什么戏了。
所以在它做出贡献时必定他和他祖先都在,然后删了它。无论是在什么情况下,他被删了他祖先却没被动的概率都是\(\frac{1}{d}\)(其中\(d\)为他和他祖先的数量)。
然后加起来就好了。
Code
1 |
|