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 学军中学的更多相关文章

  1. 2016 Al-Baath University Training Camp Contest-1

    2016 Al-Baath University Training Camp Contest-1 A题:http://codeforces.com/gym/101028/problem/A 题意:比赛 ...

  2. 2015 Multi-University Training Contest 6 solutions BY ZJU(部分解题报告)

    官方解题报告:http://bestcoder.hdu.edu.cn/blog/2015-multi-university-training-contest-6-solutions-by-zju/ 表 ...

  3. 2016 Multi-University Training Contest 10 solutions BY BUPT

    1001. 一个数组上的两个区间求中位数,可以通过分类讨论直接找到中位数,复杂度O(1).不过本题数据较小,优美的log(n)也可过. 1002. 直接求得阴影面积表达式即可. 1003. 二分完成时 ...

  4. 2016 Multi-University Training Contest 9 solutions BY 金策工业综合大学

    A Poor King Tag: Reversed BFS Preprocessing is needed to calculate answers for all positions (states ...

  5. 2016 Multi-University Training Contest 7 solutions BY SYSU

    Ants 首先求出每个点的最近点. 可以直接对所有点构造kd树,然后在kd树上查询除本身以外的最近点,因为对所有点都求一次,所以不用担心退化. 也可以用分治做,同样是O(NlogN)的复杂度. 方法是 ...

  6. 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}}{ ...

  7. 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)+\ ...

  8. 2016 Multi-University Training Contest 4 solutions BY FZU

    1001 Another Meaning 对于这个问题,显然可以进行DP: 令dp[i]表示到i结尾的字符串可以表示的不同含义数,那么考虑两种转移: 末尾不替换含义:dp[i - 1] 末尾替换含义: ...

  9. 2016 Multi-University Training Contest 3 solutions BY 绍兴一中

    1001 Sqrt Bo 由于有\(5\)次的这个限制,所以尝试寻找分界点. 很容易发现是\(2^{32}\),所以我们先比较输入的数字是否比这个大,然后再暴力开根. 复杂度是\(O(\log\log ...

随机推荐

  1. iOS 使用UIBezierPath和CAShapeLayer画各种图形

    CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CAL ...

  2. android studio 生成 jniLibs 目录

    现在一般的项目都会加入第三方jar包,第三方jar包我们会新建一个文件夹:libs,然后jar包都放在这个文件夹中. 但我们会发现,只是新建一个文件加之后,在AndroidStudio的左侧并不会出现 ...

  3. 微信小程序组件解读和分析:一、view(视图容器 )

    view组件说明:    视图容器    跟HTML代码中的DIV一样,可以包裹其他的组件,也可以被包裹在其他的组件内部.用起来比较自由随意,没有固定的结构. view组件的用法: 示例项目的wxml ...

  4. Clean Code 第十章 : 类

    最近的CleanCode读到了第十章.这一张主要讲了如何去构造一个类,感觉的CleanCode至此已经不仅仅是单纯的讲如何'写'出漂亮的代码,而是从设计方向上去构造出好的代码了. 本章节主要讲了: * ...

  5. github 下载全部项目

    从github下载资料过程中,有些项目含有子模块,有时通过git clone 或者下载zip方式项目可能会缺少文件,因此需要执行 git submodule update --init --recur ...

  6. 实训day02 python

    一.数据类型 列表: 定义:在[]内,可以存放多个任意类型的值,并以逗号隔开: 一般用于存放学生的爱好,课堂的周期等. 定义一个学生列表,可存放多个学生 students = ['A','B','C' ...

  7. HTML基础(四)表格

    定义和用法 <table> 标签定义 HTML 表格. 简单的 HTML 表格由 table 元素以及一个或多个 tr.th 或 td 元素组成. tr 元素定义表格行,th 元素定义表头 ...

  8. Linux-fuser

    Linux-fuser 1. 描述 2. 选项3. EXAMPLES4. RESTRICTIONS 限制5. SIGNAL 可用信号 fuser - 使用文件或套接字识别进程 1. 描述 fuser使 ...

  9. EBS ORACLE采购对账单自动产生发票

    只要传入个对账单号,然后跑数据抛到接口表,运行接口请求,就可以自动生成发票 create or replace package body pkg_ap_check_by_po is --创建ap发票 ...

  10. vs 2012安装ASP.NET MVC5

    VS2012能使用MVC5开发,但VS2012不自带MVC5,需要安装“用于 Visual Studio 2012 的 ASP.NET 和 Web 工具 2013.1” 从下面提供的链接下载安装: h ...