2019牛客暑期多校训练营(第十场)

Contest Info


[Practice Link](https://ac.nowcoder.com/acm/contest/890#question)
Solved A B C D E F G H I J
9/10 Ø O Ø O O O Ø O - Ø
  • O 在比赛中通过
  • Ø 赛后通过
  • ! 尝试了但是失败了
  • - 没有尝试

Solutions


A. Blackjack

题意:
咖啡鸡在玩游戏,有\(n\)张卡片,每张卡片的点数为\(x_i\),现在将他们随机打乱,每次咖啡鸡可以抽一张卡,如果它抽出的卡的点数之和\(>b\)那么它就输了。
否则, 如果点数之和\(> a\)并且\(\leq b\),那么它就胜利了,问它获胜的概率。

思路:

  • 咖啡鸡显然要一直抽卡,知道胜利或者失败
  • 那么我们考虑枚举最后一张卡\(x_i\),那么前面抽的卡的点数之和的范围为\((a - x_i, b - x_i)\)
  • 假设前面抽的卡的点数之和为\(y\),抽了\(k\)张卡,那么总的方案数为\(dp[y][k] \cdot fac[k] \cdot fac[n - k - 1]\)
  • 其中\(dp[y][k]\)表示抽了\(k\)张卡,点数之和为\(y\)的方案数,但是其中不包含当前这张卡.
  • 那么最后算出的总方案数除以\(fac[n]\)即可

B. Coffee Chicken

题意:
给出一个字符串的递推式,问\(S(n)\)的某一段长度为\(10\)的子串是多少

思路:
先预处理出长度,再根据长度决定递归左边或者右边即可。

C. Gifted Composer

题意:
刚开始有一个空字符串,现在每次从头部加入一个字符或者从尾部加入一个字符,每加入一个字符后,询问当前字符串的循环节数量。

思路:
考虑一个循环节\(x\),它出现的时间为加入\(x\)个字符之后,并且它存在的时间是一段连续的时间,那么直接二分它消失的时间即可。
为什么是连续的?
因为考虑某一时刻这个字符串已经不是\(k\)循环的了,那么之后往它后面加入字符,那么它也不可能是\(k\)循环的,因为它前面那部分已经不是\(k\)循环了,加在前面同理,因为后面已经不是\(k\)循环的了。
怎么判断一个字符串是不是\(k\)循环的?
判断\(s[1, n - x]\)\(s[x, n]\)是否相同即可。

D. Han Xin and His Troops

题意:
给出\(n\)个同余方程,求解。

思路:
\(CRT\)非互质版模板题。

E. Hilbert Sort

F. Popping Balloons

题意:
\(10^5 \cdot 10^5\)的矩阵中,可以横着射三箭,竖着射三箭,但是要保证横着射相邻两支箭之间的差值为\(r\),竖着射相邻两支箭之间的差值也为\(r\)
但是可以不射满三箭

思路:
枚举行或者列,然后维护列的起点的贡献。
直接枚举每个气球去修改,因为每个气球只会跟三个列起点有关。

G. Road Construction

题意:
在二维平面上有若干点,要求画一条直线,使得直线两边的点的数量相同,并且满足距离直线最近的点的距离最大。

思路:

  • 一个性质,直线的斜率肯定是某两个点的连线或者与之垂直
  • 那么直接枚举斜率,然后将所有点按该直线排序,取中间两个点的距离之差除\(2\)即可
    如果按直线排序?
    考虑直线方程:\(kx - y + C = 0\)
    那么点到直线的距离为\(\frac{kx - y}{\sqrt{k^2 + 1}}\)
    那么就知道点到直线的相对距离,可以通过改变\(C\)来移动直线。

H. Stammering Chemists

J. Wood Processing

题意:
\(n\)个矩形,高度相同的矩形可以拼起来。
现在需要拼出\(k\)块矩形,可以切掉一些矩形的一部分,使得它可以和别的矩形拼起来。
问拼出\(k\)块矩形需要切掉的最小面积。

思路:

  • 将问题转化成保留最多的面积。
  • 然后将矩形按高度从大到小排序
  • \(f[i][k]\)表示前\(i\)个矩形分成了\(k\)个保留的最大面积
  • 那么转移就是:

\[\begin{eqnarray*} f[i][k] &=& f[j][k - 1] + (sumw[i] - sumw[j]) \cdot h[i] \\ &=& f[j][k - 1] - sumw[j] \cdot h[i] + sumw[i] \cdot h[i] \end{eqnarray*} \]

注意式子的前面部分:\(f[j][k - 1] - sumw[j] \cdot h[i]\)是一个\(b - kx\)的直线形式。
直接维护一个上凸壳进行转移即可

posted @ 2019-08-20 18:47  Dup4  阅读(317)  评论(0编辑  收藏  举报