2017 Multi-University Training Contest
来源:互联网 发布:网络经营保健食品 编辑:程序博客网 时间:2024/06/05 08:29
A. Admiral [jds]
数据很小,头尾各处理一半。
B. Array Challenge [zmy]
通过找规律可以得到
矩阵倍增
C. Boring Game [zmy]
对于二维的翻硬币游戏,显然我们需要使用 NIM 积来计算 SG 函数。论文《从”k倍动态减法游戏”出发探究一类组合游戏问题》给出了一个
假设我们已经求了
我们需要用到一些 NIM 积的性质。
- 交换律:
x⊗y=y⊗x - 结合律:
(x⊗y)⊗z=x⊗(y⊗z) - 分配律:
(x⊕y)⊗z=(x⊗z)⊕(y⊗z) - 对于
x,y<22α x⊗22α=22αx 22α⊗22α=32×22α=22α⊕22α−1
设
因此我们可以得到代码:
inline uint nim16(uint x, uint y) { uint a1=x>>8,a2=x&255; uint b1=y>>8,b2=y&255; uint c1=nim8[a1][b1]; uint c2=nim8[a1^a2][b1^b2]; uint c3=nim8[a2][b2]; return ((c2^c3)<<8)|(nim8[c1][128]^c3);}
通过同样的方法,最终我们可以在
对于需要预处理的部分,我们可以先利用同样的思路,计算出所有
至此,对于 NIM 积的求解得到了很好的解决。
回归到此题上,此题是一个经典的 Rugs 游戏,即二维 Ruler 游戏模型。根据 tartan 定理,我们只要求出对应两维的 Ruler 游戏的 SG 值,通过 NIM 积即可得到 Rugs 游戏的 SG 值。在 Ruler 游戏中,
D. Brother and Sister [zmy]
利用期望的线性性,我们只需要考虑每个女生对答案的贡献即可。
不难发现这个图是一个内向树。
假设有
我们拓扑排序,先计算好链的部分,再枚举环,计算每个点的贡献。
还有一个小问题就是答案的输出,题目要求
我们先考虑两个不互质的数
此外,不难发现,两个分数
E. Cube Summation [zmy]
因为是
因此我们首先要解决划分数的问题。利用生成函数的知识,我们容易得到
我们先用五边形数定理求其倒数:
之后利用分治+NTT的做法得到
接下来考虑
利用容斥原理可得
第一项:
第二项:
第三项不变
最后整理得到
其中
利用NTT可以得到这部分
再乘上之前我们得到的
F. Function Counting [zmy]
仔细分析题目,容易的得到以下几个性质:
- 我们认为
x 向f(x) 连了一条有向边,这样我们会得到若干个环。 - 这个环中
x 与−x 的距离一定恰好是环长的一半。 - 这个环长的一半,即绝对值的个数
n 一定能整除k ,且k/n 为奇数,否则不会恰好到−x 的位置。
下来我们来考虑下每个环的样子:
n=1 ,方案只有一种n=2 ,方案有两种,但值得注意的是,由于两个数的间距可以为1 ,也可以为2 ,所以我们要考虑连续一段长度为4 时,有特殊的构造方法。n=3 ,不妨设一段是1,2,3 ,每次一个数可以连向和它相同正负性的,也可以是相反正负性的,一共有4 种。然后,我们会发现在连的时候,大多数长度都为2 ,但是会出现两次长度为1 的跳跃。这个跳跃只能发生在开始或结束,所以一共有2 种,总方案数为23 。n>3 和之前相同的思路,方案数为2n
这样我们能想到一个简单的 dp 方程,但是这个是
G. Jacana Number [zmy]
按照题解的方法做了一遍。。。
H. Monkeys [zmy]
实际上我们只需要求出最多的联通块个数。考虑到每个联通块至少有两个猴子,所以我们需要在树上求最大匹配,用 dp 解决即可。
I. Rotating Line [wbr]
首先考虑无论怎样旋转 线段两侧的点的个数是维持不变的。因此问题转化成在坐标轴旋转的过程中如何按x轴维护点的序列。考虑在坐标轴y以外方向的点对,当坐标轴旋转时其相对顺序不会发生改变。因此按点对的向量将点对预处理好,扫一遍即可。
J. Schedule [zmy]
贪心。我们每次把任务分给在空闲状态下,上一次任务结束时间最晚的那台机器。用堆维护下即可。
K. Two Paths [zmy]
次小短路。正反跑两边 dijkstra 判断下每条非最短路径树的边对答案的贡献。
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- #2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- #2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 十三、2017美团<大富翁游戏>
- Android Service学习笔记--创建Service
- 小(字体)图标的创建和应用
- 判断对象中的属性是否与同名变量相等
- PDF.js的使用教程
- 2017 Multi-University Training Contest
- BAT代币解读
- jQuery Mobile中翻转拨动开关slider的data-*选项
- Linux杀掉MySQL进程(关键词:Linux/MySQL/杀死进程/mysql/mysqld)
- Java网络编程精解之ServerSocket用法详解一
- 记一次困惑我两天的问题之myeclipse2014无法编译项目
- 浅谈单片机程序设计中的“分层思想”
- 深度学习框架的介绍与比较(Caffe, TensorFlow, MXNet, Torch, Theano)
- jquery模糊获取标签动态id值及内容