牛客网暑期ACM多校训练营(第一场)

Rank Solved A B C D E F G H I J
67/338 3/10 O Ø Ø O Ø Ø Ø Ø Ø O

O: 当场通过

Ø: 赛后通过

.: 尚未通过

A Monotonic Matrix

solved by chelly


chelly's solution

比赛的时候是OEIS找规律过的
我们把n*m的矩阵画出来并建立坐标系,左下角的点是(0,0),右上角的点是(n,m);考虑01和12的分界线,是两条从(0,0)走到(n,m)的每次向右向上的折线,但是要求01折线要在12折线左边(但不严格),为了严格,我们把12折线向右向下平移一格,即从(-1,1)移动到(n-1,m+1)。套用行列式容斥定理即可计算出方案数。

B Symmetric Matrix

upsolved by chelly


chelly's solution

还是OEIS找规律过的
非常喵的idea,原来给的矩阵描述其实是一个邻接矩阵的描述,于是问题转化成了:请计算有多少个无向图满足所有点的度数都为2
进一步分析性质,这个图应该是有若干个环组成,我们可以DP计数
\(dp[i]\)表示有i个点的图的个数,然后可以枚举最后一个点所在环的大小进行转移

C Fluorescent 2

upsolved by chelly


chelly's solution

\(X_i\)表示灯i是否亮,需要求的是\(E(sum(X_i)^3)\)

\(E(sum(X_i)^3)=E(\sum X_i X_j X_k )=\sum P(X_i X_j X_k )\) (因为是01分布)

\(P(X_i X_j X_k )\)表示灯i,j,k同时都亮的概率,我们要怎么求这个概率呢?

我们可以写出一个矩阵\(A_{i,j}\),表示第i个按钮能否控制第j个灯

我们抽出i,j,k这三列,问题就变成了:有n个数字,每个数字3个bit,随便取子集,问子集里的数字异或结果0的概率。这个显然就是\((\frac{1}{2})^{rank}\)

但问题是直接枚举是\(O(m^3)\)的,无法通过。

我们可以考虑枚举第i列,然后用它消其它所有列,把所有列消元过的情况丢到一个map里统计,根据rank不同来计数。

D Two Graphs

solved by chelly


chelly's solution

考虑枚举点的映射关系,但是容易发现有重复,于是我们可以把对应的边放入到一个vector里进行hash

E Removal

upsolved by chelly


chelly's solution

\(dp[i][j]\)表示做完了前i个数,已经删除了j个数的不同子序列数目
转移考虑在目前的结果后面装上什么数字,于是\(dp[i][j]\)可以转移到\(dp[next(i,num)][j+next(i,num)-i]\)
其中next(i,j)表示在位置i后面的最近的一个数字j的位置
时间复杂度\(O(nm^2)\)

F Sum of Maximum

upsolved by chelly


chelly's solution

分段讨论贡献,需要计算自然数幂和,用拉格朗日插值,比赛中hls被卡常了,要注意拉格朗日插值的写法是可以去掉log的。

G Steiner Tree

upsolved by chelly


chelly's solution

H Longest Path

upsolved by chelly


chelly's solution

很容易想到做两次树形DP,down[u]和up[u]分别表示从上往下和从下往上做的最优值
注意到求up的时候转移复杂度很高,可以用斜率优化降低复杂度
时间复杂度\(O(n)\)

I Substring

upsolved by chelly


chelly's solution

字符集只有3种,我们可以枚举3!=6种映射方式得到6个字符串
我们发现在这些字符串的子串里,除了个别字符串外,其它所有本质不同的子串都出现了6次
对于那些由单个元素组成的子串,出现了3次
于是问题的关键就是:有若干个母串,问本质不同的子串的个数是多少个
直接建立广义后缀自动机,计算每个节点的\(\sum{maxlen-minlen+1}\)即可
时间复杂度\(O(n)\)

J Different Integers

solved by chelly


chelly's solution

莫队水过,也可以用离线BIT搞

Replay

这场比赛由chelly,syf,ch在线上打的,达成了云训练的成就(雾)
开场chelly跟榜开J题,准备用莫队莽一波,然后被卡了读入,加了快读就过了。syf和ch开场就一直苦思冥想A题,然而未果,syf和ch跟榜读D,但是涉及离散数学并不能看懂题面,于是丢给了chelly,丢给chelly后syf继续搞A,ch搞F。chelly读了D题后,觉得暴力一下点的映射关系就行,但想不到如何去除多余的计数。chelly苦思冥想后,想到了用hash边解决,于是A掉了D题。期间ch发现F可搞,chelly和ch交流了一波之后,hls觉得十分正确,于是推式子去写了。chelly和syf继续攻A,chelly继续想他的组合计数,syf继续想他的DP,但都未果。这时ch发现需要计算自然幂和,但ch不会,于是chelly向ch丢出了拉格朗日插值的解法,ch看懂后一边叫着玄学算法一边把程序码出来了。然而无奈被卡常直到终场……在比赛快结束的时候,chelly不像当老实人了,借助OEIS对A题的小结果进行xjb猜,猜出了结果,交上去A了。于是chelly更不老实了,暴力跑出了B的小结果,继续用OEIS把B题秒了。(但比赛已经结束了5分钟)

chelly


被打自闭了啊TAT
希望队友能多补补题

posted @ 2018-07-21 20:39  AHU_Amadeus  阅读(256)  评论(0编辑  收藏  举报