Problems:
# | Name | Submit |
---|---|---|
A | Split it! | |
B | Max and Mex | |
C | Diamond Miner | |
D | Let's Go Hiking | |
E | Garden of the Sun | |
F | BFS Trees |
题解:
A:Split it!
判断一下 \([1,k]+[n-k+1,n]\) 是否是回文串即可,注意特判 \(k=0\) 的情况。
B:Max and Mex
设去重后的不同的数的个数为 \(n\) 。
- 若 \(\text{mex}(S)=\max(S)+1\) ,则每次操作都会新增加一种数,\(\text{ans}=n+k\) 。
- 若 \(\text{mex}(S)<\max(S)\) ,仍有两种情况:
- 若 \({\text{mex}(S)+\max(S)\over 2}\) 已经在集合中,\(\text{ans}=n\) 。
- 若 \({\text{mex}(S)+\max(S)\over 2}\) 不在集合中,\(\text{ans}=n+1\) 。
C:Diamond Miner
简单数学推导可得 \(|x|\) 小的与 \(|y|\) 小的放在一起最优。
假设 \(a<c\) ,\(b<d\) 。
要证 \(\sqrt{a^2+d^2}+\sqrt{c^2+b^2} >\sqrt{a^2+b^2}+\sqrt{c^2+d^2}\) ,
只需证 \({\left(\sqrt{a^2+d^2}+\sqrt{c^2+b^2}\right)}^2-
{\left(\sqrt{a^2+b^2}+\sqrt{c^2+d^2}\right)}^2>0\) 。
即:\(2\left(\sqrt{a^2c^2+a^2b^2+d^2c^2+d^2b^2}-
\sqrt{a^2c^2+a^2d^2+b^2c^2+b^2d^2}\right)>0\)
只需证 \((a^2b^2+c^2d^2)-(a^2d^2+c^2b^2)>0\) 。
整理得 \((a^2b^2+c^2d^2)-(a^2d^2+c^2b^2)=(a^2-c^2)(b^2-d^2)>0\) ,得证。
D:Let's Go Hiking
容易发现一个人不能走回头路,于是答案与最长单调子序列有关。
- 若有两个以上的最长单调子序列,则先手必败。
- 若只有一个最长单调子序列,则先手必败。
- 若恰有两个最长单调子序列:
- 若没有公共点,则先手必败。
- 若有公共点且为数值最小点 ( 山谷 ) ,则先手必败。
- 若有公共点且为数值最大点 ( 山峰 ) ,且最长单调子序列长度为奇数,则先手没有必胜策略。
- 若有公共点且为数值最大点 ( 山峰 ) ,且最长单调子序列长度为偶数,则先手必胜。
综上:当且仅当恰有两个最长单调子序列,它们有公共点且为数值最大点 ( 山峰 ) ,
且最长单调子序列长度为偶数时,先手必胜,公共点为唯一的必胜点。
E:Garden of the Sun
点 \((x_1,y_1)\) 和点 \((x_2,y_2)\) 的切比雪夫距离为:\(\max\{|x_1-x_2|,|y_1-y_2|\}\) 。
关键性质:所有 X
两两之间的切比雪夫距离大于 \(1\)(即没有公共点)。
所以一定不会出现下面两种情况:
.X X.
X. .X
或者说以 X
为中心的九宫格四周都不会再出现另一个 X
。
容易想到一种略显不完美的构造方案:
设行数为 \(i\) ,则 \(i\bmod 3=1\) 的行全为 X
,其他按照原来的方案。
例如:
XXXXXX
...X..
X....X
XXXXXX
..X..X
这样 \(i\bmod 3=2\) 的行与上一个 \(i\bmod 3=1\) 的行联通,
\(i\bmod 3=0\) 的行与下一个 \(i\bmod 3=1\) 的行联通。
只要在 \(i\bmod 3=2\) 的行和 \(i\bmod 3=0\) 的行之间找位置联通即可。
注意特判 \(n\bmod 3=0\) 的情况,因为最后一个 \(i\bmod 3=2\) 的行不存在下一个 \(i\bmod 3=1\) 的行。
F:BFS Trees
对于一个 \(\text{f}(x,y)\) ,考虑如何求解。
首先,若 \(x\) 到 \(y\) 的最短路不止一条,则 \(\text{f}(x,y)=0\) 。
因为若干条最短路的并集一定存在环,若删去环上任意的一条边 , 都会使环上一些点不满足 BFS
树的定义。
只有一条最短路时,\(x\) 到 \(y\) 的最短路径上的边一定在满足条件的生成树上。
考虑一条不在 \(x\) 到 \(y\) 最短路径上的边 \((i,j)\) 。
若它在某个满足条件的生成树上,且在生成树上 \(j\) 作为 \(i\) 的父亲
(此处父亲的定义是一条边两个端点中距 \(x\) 、\(y\) 较近的点 ),则有:
考虑按照到 \(x\) 点的距离进行分层,假设点 \(i\) 在第 \(k\) 层。
设 \(c_i\) 表示 \(i\) 连接到第 \(k-1\) 层有几种方案,则总方案数为:
注:上文中关于 “父亲” 的定义能够保证父亲是两端点中的某一个,即不存在:
\[\begin{cases} \text{dist}(x,i)+1=\text{dist}(x,j) \\ \text{dist}(y,j)+1=\text{dist}(y,i) \end{cases} \]假设上面的等式成立,则有:\(\text{dist}(x,i)+\text{dist}(y,i)=\text{dist}(x,j)+\text{dist}(y,j)\) ,
说明边 \((i,j)\) 在 \(x\) 到 \(y\) 的最短路径上,与 \((i,j)\) 是一条不在 \(x\) 到 \(y\) 最短路径上的边的前提矛盾。