zoukankan      html  css  js  c++  java
  • 2016 Multi-University Training Contest 6 solutions BY UESTC

    A Boring Question

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

    [=sum_{0leq k_{1}leq k_{2}leqcdots leq k_{m}leq n}prod_{1leq j< m}inom{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_{1leq j< m}inom{k_{j+1}}{k_{j}} ]

    [=sum_{k_{m}=0}^{n}left { inom{k_{m}}{k_{m-1}} sum_{k_{m-1}=0}^{k_{m}} left { inom{k_{m-1}}{k_{m-2}} cdots sum_{k_{1}=0}^{k_{2}}inom{k_{2}}{k_{1}} ight } ight } ]

    [=sum_{k_{m}=0}^{n}left { inom{k_{m}}{k_{m-1}} sum_{k_{m-1}=0}^{k_{m}} left { inom{k_{m-1}}{k_{m-2}} cdots sum_{k_{1}=0}^{k_{2}}inom{k_{2}}{k_{1}} ight } ight } ]

    [=sum_{k_{m}=0}^{n}left { inom{k_{m}}{k_{m-1}} sum_{k_{m-1}=0}^{k_{m}} left { inom{k_{m-1}}{k_{m-2}} cdots sum_{k_{2}=0}^{k_{3}}inom{k_{3}}{k_{2}}2^{k_{2}} ight } ight } ]

    [=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:如果对本场题目质量有什么意见,请猛戳这个传送门,欢迎大家前来吐槽

  • 相关阅读:
    623. Add One Row to Tree 将一行添加到树中
    771. Jewels and Stones 珠宝和石头
    216. Combination Sum III 组合总数三
    384. Shuffle an Array 随机播放一个数组
    382. Linked List Random Node 链接列表随机节点
    向github项目push代码后,Jenkins实现其自动构建
    centos下安装Jenkins
    python提取批量文件内的指定内容
    批处理实现:批量为文件添加注释
    python抓取每期双色球中奖号码,用于分析
  • 原文地址:https://www.cnblogs.com/duoxiao/p/5777670.html
Copyright © 2011-2022 走看看