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

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. 上交oj1219 重要的逆序数对

    题意: https://acm.sjtu.edu.cn/OnlineJudge/problem/1219 思路: 在经典的归并排序求逆序数对算法基础上稍作修改. 实现: #include <io ...

  2. Java报表之JFreeChart

    一.JFreeChart简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications,servlets以及JSP等使用所设计. JFre ...

  3. Synplify FPGA 逻辑综合

    作为 Synopsys FPGA 设计解决方案的一部分,Synplify FPGA 综合软件是实现高性能.高性价比的 FPGA 设计的行业标准. 其独特的行为提取综合技术 (Behavior Extr ...

  4. EEPROM介绍

    EEPROM( Electrically Erasable Programmable Read Only Memory )全称是电气可擦除可编程只读存储器,是非易失存储器,可以访问到每个字节,容量比较 ...

  5. 46 Simple Python Exercises-Higher order functions and list comprehensions

    26. Using the higher order function reduce(), write a function max_in_list() that takes a list of nu ...

  6. 大型Java Web项目的架构和部署问题

    一位ID是jackson1225的网友在javaeye询问了一个大型Web系统的架构和部署选型问题,希望能提高现有的基于Java的Web应用的服务能力.由于架构模式和部署调优一直是Java社区的热门话 ...

  7. Android掌中游斗地主游戏源码完整版

    源码大放送-掌中游斗地主(完整版),集合了单机斗地主.网络斗地主.癞子斗地主等,有史以来最有参考价值的源码,虽然运行慢了一点但是功能正常,用的是纯java写的. 项目详细说明:http://andro ...

  8. powerDesigner 把name项添加到注释(comment),完美方案!

    第一次写博客,分享一点经验吧,平时大家用powerDesigner的时候,pd是不会把name项默认添加到comment的,所以生成的数据库表里面也没有中文字段的注释. 我在网上查了一下.有解决方案了 ...

  9. bitcoin 源码解析 - 交易 Transaction

    bitcoin 源码解析 - 交易 Transaction(三) - Script 之前的章节已经比较粗略的解释了在Transaction体系当中的整体运作原理.接下来的章节会对这个体系进行分解,比较 ...

  10. Linux之 if命令——简单的shell文件

    如何写一个shell文件,写一个小脚本 1.新建一个脚本文件:vi demo.sh 2.追加执行权限: chmod u+x demo.sh 3.执行脚本:./demo.sh 4.什么是脚本?把一堆命令 ...