首先向大家表示抱歉,因为这套题是去年出的,中间间隔时间太长,今年又临时准备仓促, 所以部分题目出现了一些问题,非常抱歉。

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

  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 8 solutions BY 学军中学

    1001: 假设有4个红球,初始时从左到右标为1,2,3,4.那么肯定存在一种方案,使得最后结束时红球的顺序没有改变,也是1,2,3,4. 那么就可以把同色球都写成若干个不同色球了.所以现在共有n个颜 ...

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

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

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

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

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

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

随机推荐

  1. MySQL系列:隐式类型转化可能带来的坑

    在开发规范中,我们往往会要求研发避免在where条件中出现隐式类型转换,这么要求大概有以下两方面的原因: 隐式类型转换可能导致索引失效: 隐式类型转换可能产生非预期的结果. 注:这里说的是隐式类型转换 ...

  2. express搭建平台

    1.nodeJs的安装(npm的安装) nodejs官方下载地址:https://nodejs.org 2.express的安装( $ npm install -g express #全局安装expr ...

  3. Database coalesce

    coalesce 语法 注意:连接操作符“||”是一个值得注意的例外. 例如,空值加任何值都是空值,空值 乘任何值也都是空值,依此类推. 参数 expression 任何类型的表达式. n 表示可以指 ...

  4. 原创 齐天大圣老司机亲传rescue恢复磁盘分区

    老葵花哥哥课堂开课了本文档秉承爱看不看的原则 一不要钱 二服务大众的高尚情操咱们今天讲一讲rescue恢复磁盘分区 首先咱们搭建环境搞起来 (parted) mkpart #创建分区 Partitio ...

  5. HDU 5778 abs (暴力枚举)

    abs Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Problem De ...

  6. c语言 错误记录

    1.预处理错误 #include <>   //系统内部的 #include ""   // 自定义的 遇到 not find------解决方案:gcc -I 跟查找 ...

  7. python3.7 socket通信

    def OpenClient(self,e): global line line = socket.socket(socket.AF_INET,socket.SOCK_STREAM) line.bin ...

  8. PHP21 MVC

    学习目标 MVC设计模式 单一入口机制 MVC的实现 MVC设计模式 Model(模型) 是应用程序中用于处理应用程序数据逻辑的部分.通常模型对象负责在数据库中存取数据. View(视图) 是应用程序 ...

  9. spring boot 在idea中实现热部署

    1)在pom中直接引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifac ...

  10. day09 10 11 12 三天函数内容

    小括号.中括号名字()函数调用符[] 索引调用符 函数的注释:官方推荐: 查看注释 :funcming.__doc__      funcming.__name__ def func(name, ag ...