2016 Multi-University Training Contest 1 solutions BY HIT
首先向大家表示抱歉,因为这套题是去年出的,中间间隔时间太长,今年又临时准备仓促, 所以部分题目出现了一些问题,非常抱歉。
Abandoned country
首先注意到任意两条边的边权是不一样的,由此得知最小生成树是唯一的,最小生成树既然 是唯一的,那么期望其实也就是唯一的,不存在什么最小期望。求完最小生成树之后,接下 来的问题就可以转换成在最小生成树上求任意两点之间距离的平均值,对于每条边,统计所 有的路径用到此边的次数,也就是边的两端的点数之积。那么这条边的总贡献就是次数*边 权。最后得到所有边的贡献之和再除以总路径数\(n*(n-1)/2\)就是答案。可以\(On\)求出。任取一点为根dfs,对每个点\(i\)记录其子树包含的点数(包括其自身),设点数为\(sum[i]\),则\(i\)的父亲一侧的点数即为\(n-sum[i]\)。一边遍历一边统计就行。
Chess
简单的博弈,要预处理出所有状态的Sg值,因为列为固定的20,所以状态压缩后可以存下 所有状态。
Game
题目要求出所有合法点对间的最短路径的平均值,因此我们应当求出所有合法最短点对的最 短路径之和,再除以合法点对个数。 题目中Guard之间有着很不自然的制约关系,每个Guard的周围和同行、列都不能有其余的 Guard,但不可路过的格子却只有本身一格。由此发现,任意两点间的最短路径只会至多被 一个Guard所干扰。 因此可以想到,我们可以先算出没有Guard制约的所有最短路径长度之和,再分别对于每个 Guard求出它对最短路径长度的贡献(即原本必须经过它的最短路要多绕两格)。
GCD
我们注意观察\(gcd(a_{l},a_{l+1},...,a_{r})\),当l固定不动的时候,\(r=l...n\)时,我们可以容易的发现,随着\(r\)的増大,\(gcd(a_{l},a_{l+1},...,a_{r})\)是递减的,同时\(gcd(a_{l},a_{l+1},...,a_{r})\)最多 有\(log\ 1000,000,000\)个不同的值,为什么呢?因为\(a_{l}\)最多也就有\(log\ 1000,000,000\)个质因数
所以我们可以在log级别的时间处理出所有的以L开头的左区间的\(gcd(a_{l},a_{l+1},...,a_{r})\) 那么我们就可以在\(n\ log\ 1000,000,000\)的时间内预处理出所有的\(gcd(a_{l},a_{l+1},...,a_{r})\)然后我们可以用一个map来记录,gcd值为key的有多少个 然后我们就可以对于每个询问只需要查询对应\(gcd(a_{l},a_{l+1},...,a_{r})\)为多少,然后再在map 里面查找对应答案即可.
Necklace
其实就是一个阴阳宝石怎么交错摆放的问题,很容易想到通过DFS去搜索枚举,但是直接阴 阳交错搜索的话,时间复杂度太高,并且不容易通过估算估计代价去剪枝。 因此我们首先选取一种宝石(假设为阴),枚举所有的摆放情况,之后再依次枚举插入另一 种宝石(假设为阳),由于阴宝石己摆放好,则当前方案总代价就能有一个比较粗略但很有 效的估计:也就是每次枚举所有未插入的阳宝石,依次去插入到每一个空位中,只要存在一 个可以使其光泽变暗的空位,则认为它的光泽会变暗,由此可以得到一个当前方案的估计代 价,再采用此代价进行剪枝即可。
PowMod
考虑由于\(\varphi (i)\)是积性函数,因此我们对于每个质因子求出其贡献即可。
考虑\(n\)的某个质因子\(p\),我们设\(sum(n,m)=\sum_{i=1}^{m} \varphi (i*n)\).那么考虑将质因子\(p\)的贡献单独处 理,可以得到\(\varphi (i*n) = \varphi (p) * \sum _{i=1}^{m} \varphi (i* \frac{n}{p}) + \sum_{i=1}^{m/p} \varphi (i*n)\).
因此可以利用\(sum(n,m) = \varphi (p) * sum(\frac {n}{p},m) + sum(n,\frac{m}{p})\)来递归地计算k.
最后可以利用\(a^{b}\%p = a^{\varphi (p) + b\%\varphi (p)}\),递归地计算\(k^{k^{k^{\cdots ^{k}}}}\)
Rigid Frameworks
原问题等价于求左边有n个点,右边有m个点的联通的二分图的数目 可以用类似连通图计数的方法dp得到,复杂度\(O(n6)\)。
实际上是 projecteuler 434
Shell Necklace
设\(f[i]\)表示装饰前\(i\)个的代价,那么\(f[i] = \sum_{j=1}^{i} f(i-j)*a[j]\)。直接计算是\(n^{2}\)的,观察这个式子,显然符合\(fft\)的形式,所以用分治\(fft\)优化即可。
Solid Dominoes Tilings
回忆多米诺骨牌完美覆盖。
显然我们可以轮廓线DP。
swap(p, q); f[p].clear(); foreach(it, f[q]) {
d = it->se;
ints= it->fi;
if(j && !_1(s, j) && _1(s, j-1))
{
f[p][s"_1(j-1)] += d; // 横着放
f[p][s二1(j)] += d; // 竖着放或不放...
}
} 稍加修改可以支持障碍以及空隙。
swap(p, q); f[p].clear(); foreach(it, f[q]) {
d = it->se; ints = it->fi;
if(buf[i1][j] != ’.’){
if(!_1(s, j)) f[p][s] += d; // 有障碍、必须不放
}
else{
if(j != j0 && !_1(s, j) && _1(s, j-1) && buf[i1][j-1]=='.')
f[p][s二1(j-1)] += d; // 横着放
if(!_1(s, j)){ //是否没被覆盖
f[p][s] += d; // 不放
f[p][s二1(j)] += d; // 竖着放
}
else{
f[p][s二1(j)] += d; // 不放
}
}
}
。。。剩下只需要考虑solid的问题。。。
方法一:加维,复杂度太高。不适用这个题
方法二:容斥原理。
我们用上述方法先预处理不考虑分割线的状态。我们对列用容斥原理,枚举列上分割线的状态。
在用递推处理行分割的情况,复杂度\(O(n\ 2^{m})\)。
Subway
这个题是一个树的同构判断,想办法用一个和节点顺序无关的哈希函数将树表示出来即可。 这里提供一种方法:首先求解树的中点,然后将中点作为根。只有一个结点的子树哈希值为 1。选一个比较大的质数P和一个特别大的质数Q。对于每一颗树,把它的所有子树的哈希 值排序。然后\(hash=sum(P^{i}*hash[i])\%Q\),就能算出来总体的哈希值。有两个中点的树两个 中点都试一下。为了保险可以检查下哈希值有没有重的。
tetrahedron
设四个点是A、B、C、D ,那么内切球的圆心可以表示为 $\frac{ \begin{Vmatrix}(b-a)\times (c-a)\end{Vmatrix}\times d+\begin{Vmatrix}(b-a)\times (d-a)\end{Vmatrix}\times c + \begin{Vmatrix}(c-a)\times (d-a)\end{Vmatrix}\times b +\begin{Vmatrix}(c-b)\times (d-b)\end{Vmatrix}\times a }{ \begin{Vmatrix}(b-a)\times (c-a)\end{Vmatrix}+ \begin{Vmatrix}(b-a)\times (d-a)\end{Vmatrix} + \begin{Vmatrix}(c-a)\times (d-a)\end{Vmatrix} + \begin{Vmatrix}(c-b)\times (d-b)\end{Vmatrix}} $
半径$r =\frac{ \begin{Vmatrix} a_{x} & a_{y} &a_{z} & 1\ b_{x} & b_{y} &b_{z} & 1\ c_{x} & c_{y} &c_{z} & 1\ d_{x} & d_{y} &d_{z} & 1 \end{Vmatrix} }{ \begin{Vmatrix}(b-a)\times (c-a)\end{Vmatrix}+ \begin{Vmatrix}(b-a)\times (d-a)\end{Vmatrix} + \begin{Vmatrix}(c-a)\times (d-a)\end{Vmatrix} + \begin{Vmatrix}(c-b)\times (d-b)\end{Vmatrix}} $
2016 Multi-University Training Contest 1 solutions BY HIT的更多相关文章
- 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 8 solutions BY 学军中学
1001: 假设有4个红球,初始时从左到右标为1,2,3,4.那么肯定存在一种方案,使得最后结束时红球的顺序没有改变,也是1,2,3,4. 那么就可以把同色球都写成若干个不同色球了.所以现在共有n个颜 ...
- 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] 末尾替换含义: ...
随机推荐
- AJPFX总结java开发常用类(包装,数字处理集合等)(一)
一:首谈java中的包装类 Java为基本类型提供包装类,这使得任何接受对象的操作也可以用来操作基本类型,直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类.jav ...
- 洛谷P4013 数字梯形问题(费用流)
题意 $N$行的矩阵,第一行有$M$个元素,第$i$行有$M + i - 1$个元素 问在三个规则下怎么取使得权值最大 Sol 我只会第一问qwq.. 因为有数量的限制,考虑拆点建图,把每个点拆为$a ...
- 字符串、数组、json
一.字符串 string 1.字符串的定义: (1).var s="haha"; (2).var s=new string ("hello") 对象形式定义 2 ...
- Bootstrap基本理论
Bootstrap,来自 Twitter,是目前最受欢迎的前段框架.Bootstrap是基于HTML.CSS.JAVASCRIPT的,它简洁灵活,使得Web开发更加快捷 Bootstrap特点:优雅, ...
- 通过HTML 取得页面、屏幕、浏览器的高度宽度
一.介绍 1. 容器 一个页面的展示,从外到内的容器为:屏幕.浏览器以及页面本身. HTML元素展现在页面内,页面展现在浏览器内,而浏览器展现在屏幕内. 通过Js的一些对象可以获取这些容器的高度.宽度 ...
- Android 基础知识总结
搞了这么久安卓开发,对基础的知识点总会遗忘,所有有必要总结一下:
- Spotlight安装
刚才技术群的一个朋友在安装Spotligh出现了一些问题,所以本人临时写个简单的教程 1.下载安装包(安装包地址:https://pan.baidu.com/s/1c2tmqyc),解压,然后傻瓜式安 ...
- HYSBZ 1208 宠物收养所 (Splay树)
题意:一家宠物收养所负责处理领养者与遗弃宠物业务,有人来领宠物,则领一只最理想的.若没有宠物了,领养者们就得等到宠物来,宠物一来立刻送给其中一个等待者.如果有两个理想的选择,则选择那个值较小的.收养所 ...
- BZOJ 2157: 旅游 (2017.7.21 6:30-2017.7.21 15:38 今日第一题。。)
Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1754 Solved: 765 Description Ray 乐忠于旅游,这次他来到了T 城.T ...
- LibreOJ #119. 最短路 (堆优化dijkstra)
题目描述 给一个 n(1≤2500≤n) n(1 \leq 2500 \leq n)n(1≤2500≤n) 个点 m(1≤6200≤m) m(1 \leq 6200 \leq m)m(1≤6200≤m ...