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关于Set接口学习笔记及总结
Set接口中的方法和Collection中方法一致的.Set接口取出方式只有一种,迭代器. |--HashSet:底层数据结构是哈希表,线程是不同步的.无序,高效: HashSet集合保证元素唯一性: ...
- B树、B+树、红黑树、AVL树
定义及概念 B树 二叉树的深度较大,在查找时会造成I/O读写频繁,查询效率低下,所以引入了多叉树的结构,也就是B树.阶为M的B树具有以下性质: 1.根节点在不为叶子节点的情况下儿子数为 2 ~ M2. ...
- MFC技术积累——基于MFC对话框类的那些事儿5
4. 菜单 4.1 弹出菜单 本节主要讲解如何在主对话框的指定区域内通过鼠标右击来弹出一个菜单选项.最终效果图如图4.1. 如图4.1鼠标只能在指定区域(图中深色区域)内右击时弹出菜单,在指定区域外点 ...
- Outlook 数据文件(.pst 和 .ost)简介
使用 Microsoft Outlook 时,电子邮件.日历.任务和其他项目保存在邮件服务器或计算机上,或者同时保存在这两个位置.如果 Outlook 项目保存在计算机上,则它们保存在 Outlook ...
- Qt中常用的类
QApplication 应用程序类 管理图形用户界面应用程序的控制流和主要设置 QLabel 标签类 提供 ...
- python day two
今日内容: 1.常用数据类型及内置方法 2.文件处理 3.函数 列表类型: 定义: 在[]内,可以存放多个任意类型的值,并以逗号隔开. 一般用于存放学生的爱好,课堂的周期等等... 优先掌握的操作: ...
- vux安装
1. 在项目里安装vux cnpm install vux --save 2. 安装vux-loader cnpm install vux-loader --save-dev 3. 安装less-lo ...
- 最短路 || HDU 2066 一个人的旅行
本草的旅行故事(✺ω✺),可以从S个点中的任意一个开始,到达D个点中的任意一个,求最短路 *解法:把草儿的家记成点0,S个点与0的距离为0,然后spfa求最短路 又是改了一万次,①多组数据啊 ②改完多 ...
- JavaSE-04 Java循环结构
学习要点 while循环 do-while循环 for循环 循环 什么是循环 循环的要素 while循环 语法分析 案例 老师每天检查小强的学习任务是否合格,如果不合格,则继续进行. 老师给小强安排的 ...
- Android Studio中删除无效的字符串资源
1.定位到当前项目中的strings.xml文件 1.菜单栏找到"Analyze"->"Run Inspection By Name..."->输入 ...