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] 末尾替换含义: ...
随机推荐
- 在windows下编译出linux可执行程序
set GOARCH=amd64 set GOOS=linux go build xx.go 会生成一个没有后缀的xx二进制文件 将该文件放入linux系统某个文件夹下 赋予权限 chmod 777 ...
- servlet上传文件+上传进度显示
效果图 功能描述 1.使用jquery.form.js实现异步上传功能,并显示上传进度 2.servlet中保存上传的文件到指定文件夹 3.查看已经上传的文件 4.不同文件类型用不同图标显示 下载 h ...
- Web版简易五子棋
前些时候把大三写的C++版五子棋改成Web板挂到了网上,具有一定傻瓜式智能,欢迎体验使用拍砖:http://www.zhentiyuan.com/Games/QuickFiveChess.aspx 现 ...
- BZOJ1132: [POI2008]Tro(叉积 排序)
题意 世上最良心题目描述qwq 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Sol 直接模拟是$n^3$的. 考虑先枚举一个$i$,那么我们要算的就是$\sum_ ...
- 关于获取计算机唯一ID问题
1:CPU序列号,并不是每颗CPU都有一个唯一的序列号,CPU试每种型号一个序列号,其实可以认为是CPU型号号码.PIII以前的计算机没有ID,而且AMD的CPU也没有ID. 创建一个虚拟机,他会重新 ...
- liunx防火墙的基本操作
centos7中的使用 CentOS 7.0默认使用的是firewall作为防火墙 查看防火墙状态------->firewall-cmd --state 停止firewall-------&g ...
- js 字符串截取 substring() 方法、 substr() 方法、slice() 方法、split() 、join();
三种 js 截取字符串的方法: substring() 方法: substr() 方法: slice() 方法: 1.:substring() 方法:string.substring(from, to ...
- 7-Java-C(四平方和)
题目描述: 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1^2 + ...
- 【转载】用Python实现端口映射功能(A/B/C内外网)
转载地址 :http://hutaow.com/blog/2014/09/08/write-tcp-mapping-program-with-python/ 有A,B,C三台计算机,A,B互通,B,C ...
- axios 里面 then 默认写的function里面没有this,改成箭头函数后就可以用this了
,methods:{ loadJson:function(){ //this.jsonTest = "jjj" this.$http.get('http://localhost:3 ...