【比赛记录】 Codeforces Round #706 Div.2

Problems

# Name Submit
A Split it! Submit
B Max and Mex Submit
C Diamond Miner Submit
D Let's Go Hiking Submit
E Garden of the Sun Submit
F BFS Trees Submit

题解:

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\) 较近的点 ),则有:

\[\text{dist}(x,i)=\text{dist}(x,j)+1 \wedge \text{dist}(y,i)=\text{dist}(y,j)+1 \]

考虑按照到 \(x\) 点的距离进行分层,假设点 \(i\) 在第 \(k\) 层。
\(c_i\) 表示 \(i\) 连接到第 \(k-1\) 层有几种方案,则总方案数为:

\[\prod\limits_{i\neq x \wedge i\neq y} c_i \]

注:上文中关于 “父亲” 的定义能够保证父亲是两端点中的某一个,即不存在:

\[\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\) 最短路径上的边的前提矛盾。

posted @ 2023-03-01 13:46  loctopus  阅读(48)  评论(0)    收藏  举报