2016 Multi-University Training Contest 8 solutions BY 学军中学
1001:
假设有4个红球,初始时从左到右标为1,2,3,4。那么肯定存在一种方案,使得最后结束时红球的顺序没有改变,也是1,2,3,4。 那么就可以把同色球都写成若干个不同色球了。所以现在共有n个颜色互异的球。按照最终情况标上1,2,。。,n的序号,那么贪心的来每次操作就是把一个区间排序就行了。
1002:
环加树的同构计数问题。假如没有环,那么可以在树上dp来计算答案,具体方法是,把根节点的所有同构的子树看成相同的,然后用隔板法,算组合数即可得到答案。树的同构可以利用哈希来解决。有环的情况就是一个经典的polya计数问题了。
1003:
直接状压dp就行了,f[S]表示点集S的色数,枚举子集转移(子集是独立集)。这样是3^n的。 一个复杂度更优的做法是把所有独立集都预处理出来,然后作n次or卷积。这样是n^2*2^n的。
1004:
令xi表示联通块i是否存在(且i为树), 图的权值为(Σxi)^m。对于某k个联通块,如果它们同时在图中出现,那么贡献为S(m, k) * k!, 其中S(m, k)是第二类斯特林数。
令fn为n个点的无向连通图个数,gi,j为i个点j个连通块的无向图个数。
f与g均可通过简单的dp求得。再将求出来的东西套入之前的斯特林数式子就可以计算答案了。
为了通过此题,计算dp的过程可能需要FFT来优化。
1005:
先来考虑一个排列可到达的条件是什么。 如果不是 n 排列,而是 01 序列的话,那么条件是显然的:只要对于任意 i,序列 b 的第 i 个 1 都位于序列 a 的第 i 个 1 的右边(不一定严格),那么 a 就可以到达 b。 对于一个 n 排列 a,以及一个数 k,把 a 中大于 k 的数标为 1,剩下的数标为 0,就能得 到一个 01 序列。如果对于任意的 k,排列 a 对应的 01 序列都能够到达排列 b 对应的序列,那 么排列 a 就可以到达排列 b。它的必要性是显然的。至于充分性,可以观察下面这个移动策略: i 从 n 到 1 的顺序,每次将数字 i 移到它的目标位置,令当前位置为 l,目标位置为 r,当前 (l, r] 区间的最大数字为 a[j],那么把 a[l] 和 a[j] 交换一下即可。容易看出这样移动一定是可行 的。 然后根据这个移动策略建图,图结点数是n*n!的,而且两个可达排列之间只有唯一一条路径,所以可以按拓扑序递推。
1006:
简单的物理题,发现球的碰撞只是交换了速度,因此可以看成没发生碰撞。这样解一个微分方程就可以算出每个球经过t秒之后的速度,如果球的初速度为v, 那么t秒后,球的速度为sqrt(v ^ 2 + 2tC). 只需要最开始对每个球的速度排序好就行了。
1007:Rikka with Parenthesis
如果 \(n\) 是奇数,那么所有括号序列的权值都是 \(10^{100}\),答案是 \(0\)。 如果 \(n\) 是偶数,不难发现所有长度为 \(n\) 的括号序列的权值都不超过 \(2\)。 对于任意一个括号序列 \(S\),把匹配的括号消去之后,一定是若干个右括号接若干个左括号的形式。所以只要第一次操作反转所有右括号,第二次操作把后半部分右括号反转成左括号,就得到了匹配的括号序列。 令 \(N=\frac{n}{2}\)。 \(A_0\) 就是卡特兰数 \(h_N=\frac{\binom{n}{N}}{N+1}\)。 \(A_1\) 是一段连续的左括号或者连续的右括号中间夹着一些匹配的括号序列,可以得到递推式 \(f_i=\sum f_{i-2j-1} \times h_j\),方案数就是 \(2(f_i+f_{i+1}-h_N)\),可以得到 \(A_1=2\binom{n}{N}-2A_0\)。 \(A_2\) 就是剩下的括号序列个数,即 \(2^n-A_0-A_1\)。 问题就变成了怎么在任意模下求组合数,可以用中国剩余定理转化为求模 \(p^q\) 下的组合数,其中 \(p\) 是质数。可以将所有数表示成二元组 \((a,b)\),表示这个数是 \(a \times p^b\),其中 \(\gcd(a,p)=1\),因此 \(a\) 的部分的运算是可以直接对 \(p^q\) 取模的,得到答案后将二元组转化成整数即可,最后用中国剩余定理合并。 时间复杂度 \(O(n \log m)\)。
1008:Rikka with Sequence
将序列差分,即令 \(B_i=A_i-A_{i-1}\),那么区间加操作就变成了单点修改。 考虑区间开根号操作,当 \(B_i=0\),即 \(A_i=A_{i-1}\) 时,开完根号 \(B_i\) 依然是 \(0\)。对于 \(B_i \neq 0\) 的项,因为对于正整数 \(a,b(a > b)\),有 \(\sqrt a- \sqrt b < \sqrt {a-b}\),所以在操作后 \(B_i\) 的绝对值严格小于它的根号,因此 \(B_i\) 如果不被修改,在 \(O(\log \log n)\) 次操作后一定会变成 \(0\)。 于是我们可以把连续相同的段放到一起进行维护,开根号时可以直接扫区间中的每一段进行开根号。维护的方式很多,线段树或者树状数组加 Set 都可行。 时间复杂度 \(O(n \log n \log \log n)\)
1009:Rikka with Subset
首先将所有数从大到小排序,考虑排序后每一个数作为第 \(k\) 大的贡献 \(f_k\),那么有 \(f_k=\sum_{i=1}^n \binom{i-1}{k-1} 2^{n-i} A_i\) 用 FFT 进行优化即可,时间复杂度 \(O(n \log n)\)
1010:Rikka with Subset II
枚举直径的终点 \(i\),进行一次 BFS 求出到 \(i\) 距离为 \(j\) 的点的个数。 枚举直径 \(d\),那么所有以 \(i\) 为直径中心直径为 \(d\) 的点集满足所有点到 \(i\) 的距离都不超过 \(\frac{d}{2}\),至少有两个点到 \(i\) 的距离等于 \(\frac{d}{2}\),同时在以 \(i\) 为根的情况下,至少有两个孩子的子树中存在距离等于 \(\frac{d}{2}\) 的点。 预处理一下 \(i\) 的每一个孩子 \(j\) 的子树中到 \(j\) 距离为 \(k\) 的点的个数,累加答案即可。 时间复杂度 \(O(n^2)\)
1011:Rikka with Parenthesis II
最优情况下一定交换第一个右括号和最后一个左括号,交换后判断一下即可。 时间复杂度 \(O(n)\)
2016 Multi-University Training Contest 8 solutions BY 学军中学的更多相关文章
- 2016 Al-Baath University Training Camp Contest-1
2016 Al-Baath University Training Camp Contest-1 A题:http://codeforces.com/gym/101028/problem/A 题意:比赛 ...
- 2015 Multi-University Training Contest 6 solutions BY ZJU(部分解题报告)
官方解题报告:http://bestcoder.hdu.edu.cn/blog/2015-multi-university-training-contest-6-solutions-by-zju/ 表 ...
- 2016 Multi-University Training Contest 10 solutions BY BUPT
1001. 一个数组上的两个区间求中位数,可以通过分类讨论直接找到中位数,复杂度O(1).不过本题数据较小,优美的log(n)也可过. 1002. 直接求得阴影面积表达式即可. 1003. 二分完成时 ...
- 2016 Multi-University Training Contest 9 solutions BY 金策工业综合大学
A Poor King Tag: Reversed BFS Preprocessing is needed to calculate answers for all positions (states ...
- 2016 Multi-University Training Contest 7 solutions BY SYSU
Ants 首先求出每个点的最近点. 可以直接对所有点构造kd树,然后在kd树上查询除本身以外的最近点,因为对所有点都求一次,所以不用担心退化. 也可以用分治做,同样是O(NlogN)的复杂度. 方法是 ...
- 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}}{ ...
- 2016 Multi-University Training Contest 5 solutions BY ZSTU
ATM Mechine E(i,j):存款的范围是[0,i],还可以被警告j次的期望值. E(i,j) = \(max_{k=1}^{i}{\frac{i-k+1}{i+1} * E(i-k,j)+\ ...
- 2016 Multi-University Training Contest 4 solutions BY FZU
1001 Another Meaning 对于这个问题,显然可以进行DP: 令dp[i]表示到i结尾的字符串可以表示的不同含义数,那么考虑两种转移: 末尾不替换含义:dp[i - 1] 末尾替换含义: ...
- 2016 Multi-University Training Contest 3 solutions BY 绍兴一中
1001 Sqrt Bo 由于有\(5\)次的这个限制,所以尝试寻找分界点. 很容易发现是\(2^{32}\),所以我们先比较输入的数字是否比这个大,然后再暴力开根. 复杂度是\(O(\log\log ...
随机推荐
- AJPFX简述Context.startService()和Context.bindService
Context.startService()和Context.bindService 服务不能自己运行,需要通过调用Context.startService()或Context.bindService ...
- H+后台主题UI框架---整理(二)
本篇文章是针对H+后台主题UI框架的整理的第二部分.主要只有一个point.如下: 其代码如下: <div class="ibox float-e-margins"> ...
- 移动端1px边框伪类宽高计算
移动端1px边框在手机上看显得比较粗,于是我们用伪类结合css3缩放的方法去设置线条,但是如果设置div的一条边,水平线就设置宽度100%,垂直线就设置高度100%,那么如果是div的四条边呢?宽高1 ...
- jsonp对付同源策略
当 协议不同或者域名/ip不同或者端口号不同 , 都不算是同源 这时候 源生的ajax 就不能进行数据请求了 JSONP json with padding 在平时的开发中也发现了 ,当我们请求 ...
- html文本溢出显示省略字符的两种常用方法
方法一:使用CSS溢出省略的方式解决 解决效果如下: css代码: display: -webkit-box; display: -moz-box; white-space: pre-wrap; wo ...
- 关于dzzoffice 破解版
最近看到很多人在搜索dzzoffice破解版,其实dzzoffie是一款全开源的产品,开放的功能是与演示站中一摸一样的,所以并不会有人破解这种全开源的系统.那么为什么会有人搜索这样的关键词呢? 可能大 ...
- Android主题更换换肤
知识总览android主题换肤通常借助LayoutInflater#setFactory实现换肤. 换肤步骤: 通过解析外部的apk压缩文件,创建自定义的Resource对象去访问apk压缩文件的资源 ...
- 解决selenium.common.exception.WebDriverException:Message:'chromedriver' executable needs to be in Path
'chromedriver' executable needs to be in Path 声明:本人萌新,刚学python不久记录一下自己的坑,发出来若能帮助到一些人尽早解决问题那便是极好的,( ̄▽ ...
- iview table 勾选当前行代码 data key _checked: true
给 data 项设置特殊 key _checked: true 可以默认选中当前项
- vs2008控件查看器
使用 OLE/COM 对象查看器 通过读取控件的类型库,OLE/COM 对象查看器使您得以查看控件的接口. 使用 OLE/COM 对象查看器 单击“工具”菜单上的“OLE/COM 对象查看器”或在命令 ...