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. canvas绘制基础

    初始接口 <body> <canvas id=“canvas”></canvas> <script> var canvas = document.get ...

  2. 在colab上运行style-transfer

    1,  打开chrome浏览器,输入以下网址,打开风格转换主文件 https://colab.research.google.com/github/Hvass-Labs/TensorFlow-Tuto ...

  3. tomcat 的log4j配置问题

    #log4j.rootLogger=DEBUG,stdout,filelog4j.rootLogger=ERROR,stdout,filelog4j.appender.stdout=org.apach ...

  4. Vue.js Extension Pack 和 jsconfig.json 可以定位跳转到@开头的路径等自定义路径

    Vue.js Extension Pack | vsCode插件 可以定位跳转到@开头的路径等自定义路径 webpack自定义别名后,VScode路径提示问题 //tsconfig.json 或者 j ...

  5. 在CNN网络中roi从原图映射到feature map中的计算方法

    在使用fast rcnn以及faster rcnn做检测任务的时候,涉及到从图像的roi区域到feature map中roi的映射,然后再进行roi_pooling之类的操作.比如图像的大小是(600 ...

  6. java list去重操作实现方式

    Java中的List是可以包含重复元素的(hash code 和equals),接下来将介绍两种方式实现java list去重操作,感兴趣的朋友可以参考下   Java中的List是可以包含重复元素的 ...

  7. IFE春季班第一阶段任务(请仔细阅读)

    第一阶段的主要目标是帮助大家 了解.认识.学习.掌握HTML及CSS.第一阶段任务从 3月14日 开始,持续到 4月3日.当然,您也可以在这个时间以后继续自行实践练习. 第一阶段任务一共有 12 个题 ...

  8. Java 垃圾回收机制 (分代垃圾回收ZGC)

    什么是自动垃圾回收? 自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制.所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象:而未使用中的对象(未引 ...

  9. Multiplication Puzzle POJ - 1651

    解法 区间dp例题,长度从2开始到n结束起点从1到n,中间枚举的时候是看着左端点右端点与中点的乘积 代码 #include <iostream> #include <cstring& ...

  10. Linux下安装Redis5.0.2

    1.下载redis 地址 http://download.redis.io/releases/redis-5.0.2.tar.gz 2.解压tar -zxf redis-5.0.2.tar.gz 3. ...