2016 Multi-University Training Contest 6 solutions BY UESTC

A Boring Question

\[\sum_{0\leq k_{1},k_{2},\cdots k_{m}\leq n}\prod_{1\leq j< m}\binom{k_{j+1}}{k_{j}} \]

\[=\sum_{0\leq k_{1}\leq k_{2}\leq\cdots \leq k_{m}\leq n}\prod_{1\leq j< m}\binom{k_{j+1}}{k_{j}} \]

\[=\sum_{k_{m}=0}^{n}\sum_{k_{m-1}=0}^{k_{m}}\cdots \sum_{k_{1}=0}^{k_{2}}\prod_{1\leq j< m}\binom{k_{j+1}}{k_{j}} \]

\[=\sum_{k_{m}=0}^{n}\left \{ \binom{k_{m}}{k_{m-1}} \sum_{k_{m-1}=0}^{k_{m}} \left \{ \binom{k_{m-1}}{k_{m-2}} \cdots \sum_{k_{1}=0}^{k_{2}}\binom{k_{2}}{k_{1}} \right \} \right \} \]

\[=\sum_{k_{m}=0}^{n}\left \{ \binom{k_{m}}{k_{m-1}} \sum_{k_{m-1}=0}^{k_{m}} \left \{ \binom{k_{m-1}}{k_{m-2}} \cdots \sum_{k_{1}=0}^{k_{2}}\binom{k_{2}}{k_{1}} \right \} \right \} \]

\[=\sum_{k_{m}=0}^{n}\left \{ \binom{k_{m}}{k_{m-1}} \sum_{k_{m-1}=0}^{k_{m}} \left \{ \binom{k_{m-1}}{k_{m-2}} \cdots \sum_{k_{2}=0}^{k_{3}}\binom{k_{3}}{k_{2}}2^{k_{2}} \right \} \right \} \]

\[=\sum_{k_{m}=0}^{n}m^{k_{m}} \]

\[=\frac{m^{n+1} - 1}{m - 1} \]

A Simple Chess

这是一道容斥+Lucas定理的水题。

tips:终点可能有障碍物

A Simple Nim

sg[0]=0

当x=8k+7时sg[x]=8k+8,

当x=8k+8时sg[x]=8k+7,

其余时候sg[x]=x;(k>=0)

打表找规律可得,数学归纳法可证。

Magic Number

对于bi来说,二进制的第i位一定为1,大于i位一定是0。将二进制的每一位看作一个结点构成一棵树,使得结点i到根的路径上的所有结点编号表示bi二进制中为1的位置。已知b1到bi-1所构成的树,新增加一个结点bi,只需要求构成bi的所有bj的最近公共祖先,将结点i放到该祖先的儿子的位置。对于询问ci,只需要求构成di的所有bj的到根路径的并,答案为路径并的结点数。

Master Zhu

考虑一个朴素的解法:2^n枚举在哪些行放置棋子,并判断是否可以通过这些棋子填充其它的列。由于区间的边界非递减,那么处理出要放的列,每次贪心地放置编号最小的需要放的列必然是最优的。

那么考虑一个dp的做法:dp1[i][j][k]表示现在做了前i行且有一些行没填,需要把jk列都放置棋子才能把前i行的所有格子满足条件,dp2[i][j]表示填了前i行且有一些行没填,但是所有格子都已经满足条件,且之后只需要填第j列之后的列,dp3[i][j][k]表示填了前i行,且下一个没填的行是第k行,现在填了L[k]j列(j = L[K] - 1表示一列都没有填)。

考虑dp1的转移,对于第i行,只要枚举左边界不小于L(i+1)且右边界不大于R(i+1)的列区间没填,因为若左边界小于L(i+1),那么这些列以后无论怎么样都无法被填充。然后分情况讨论转移到i+1的即可。

考虑dp2的转移,枚举下一个没填的行k,并分情况转移到相应的dp2[k][R[k]]和dp3[i][k][max(j,L[k] - 1)]

考虑dp3的转移,也是分情况讨论转移,具体实现看标程。时间复杂度O(N*(2NM + M^2))

Stabilization

考虑去掉abs符号,发现只有相邻两个数的最高位被影响了才会影响abs的符号,所以可以按照最高位不一样的位置分类,之后考虑朴素枚举x从0到2^20,每次的复杂度是O(400),无法通过,考虑优化,第一种方法是用DFS来进行枚举,第二种则是加入记忆化

This world need more Zhu

卿学姐说她的fans都能过这个题

考虑链上的操作,我们用树上莫队来处理,因为很容易做到O(1)转移到相邻节点的状态。

考虑子树操作,可以启发式合并来维护答案,也可以先dfs序一下,然后再跑普通的莫队算法就好了。

To My Girlfriend

令dp[i][j][s1][s2]表示前i个物品填了j的体积,有s1个物品选为为必选,s2个物品选为必不选的方案数(0<=s1,s2<=2),则有转移方程dp[i][j][s1][s2] = dp[i - 1][j][s1][s2] + dp[i - 1][j - a[i]][s1 - 1][s2] + dp[i - 1][j][s1][s2 - 1],边界条件为dp[0][0][0][0] = 1,时间复杂度O(NS*3^2)。

Up Sky,Mr.Zhu

我们把所有长度相同的回文串插入到同一个可持久化字典树里面

然后

在线查询[L,R] 特征串为T 长度为1 的回文串的数量
在线查询[L+1,R] 特征串为T 长度为2 的回文串的数量
在线查询[L+2,R] 特征串为T 长度为3 的回文串的数量
......
在线查询[L+9,R] 特征串为T 长度为10 的回文串的数量

Windows 10

您可能是正版Windows 10的受害者
直接贪心就好

比较直观的看法是使劲往下降,然后升回来

或者使劲往下降然后停顿然后再使劲往下降。。。

于是就能将问题变成一个子问题,然后dfs就好

需要注意的是由于按up键也可以打断连续向下的功效

所以应该记录停顿了几次,以后向上的时候用停顿补回来

Zhu’s Math Problem

方法1 :暴力小数据,暴力解方程,即假设答案是关于A,B,C,D的小于等于k次的多项式方程,然后解即可

方法2 :分类讨论,比较烦

方法3 :考虑数位DP,从高位到低位依次放数字即可,加上状态表示a+c-b-d,a+d-b-c即可

ps:如果对本场题目质量有什么意见,请猛戳这个传送门,欢迎大家前来吐槽

posted @ 2016-08-16 19:54  多校博客  阅读(485)  评论(0编辑  收藏  举报