P10874 [COTS 2022] 旅程 Dugput(非官方数据)
题目背景
译自 [Izborne Pripreme 2022 (Croatian IOI/CEOI Team Selection)](https://hsin.hr/pripreme2022/) D2T1。$\texttt{5s,0.5G}$。
- **输入格式有微调。**
- **官方数据有误。** 部分 out 文件是使用树姐姐 [
hhoppitree](https://www.luogu.com.cn/user/183609) 的代码生成的。如果出现了分数 $\gt 100$ 的情况,欢迎联系搬题人更新数据。
题目描述
构造一个 $N\times M$ 的网格图,边权均为 $1$,每条边可以存在或者不存在。
在连通的前提下,最大化 $(A,B)$ 到 $(C,D)$ 的最短路长度。
**此处路径长度定义为路径经过的节点个数。**
输入格式
**本题单个测试点内含有多组测试数据。**
第一行,两个整数 $\mathrm{type},T$,表示测试数据类型和测试数据组数。
接下来 $T$ 行,每行 $6$ 个整数 $N,M,A,B,C,D$,含义见题面。
输出格式
每组测试数据输出若干行。
- $\mathrm{type}=0$:「构造」类数据
此类数据中,你需要构造一个网格图。输出 $(2N-1)$ 行,每行 $(3M-2)$ 个字符。
其中,第 $(2i-1)$ 行的第 $(3j-2)$ 个字符代表点 $(i,j)$。当 $(i,j)=(A,B)$ 或 $(S,T)$ 时,用 `*`(ASCII 42)表示;否则用 `o`(ASCII 111)表示。
对于同一行的两个点 $(i,j),(i,j+1)$,若有边,则用 `--`(ASCII 45)填充它们之间的两个空格;否则不填充。
对于同一列的两个点 $(i,j),(i+1,j)$,若有边,则用 `|`(ASCII 124)填充它们之间的一个空格;否则不填充。
未填充的区域均用空格补齐。不要输出多余的空格和空行。
可参阅样例输出。
- $\mathrm{type}=1$:「传统」类数据
只需要输出一行一个整数,表示最短的最长路长度。
说明/提示
对于 $100\%$ 的数据,保证:
- $1\le N,M\le 5\, 000$;
- $1\le T\le 1\, 600$;
- $1\le A,C\le N$,$1\le B,D\le M$;
- $(A,B)\neq (C,D)$。
| 子任务编号 | $N\cdot M\in $ | $M\le $ | $\mathrm{type}=$ | 分值 |
|:-----:|:------:| :----: | :--: | :--: |
| $1$ | $[2,100]$ | $5\, 000$ | $0$ | $20$ |
| $2$ | $[2,1\, 000]$ | $5\, 000$ | $0$ | $25$ |
| $3$ | $[2,15\, 000]$ | $3$ | $0$ | $15$ |
| $4$ | $[2,100\, 000]$ | $5\, 000$ | $0$ | $25$ |
| $5$ | $[2,100\, 000]$ | $5\, 000$ | $1$ | $15$ |
【评分方式】
- $\mathrm{type}=0$:「构造」类数据
记 $d_i$ 为第 $i$ 组测试数据中,你构造的方案中的最短路长度,$D_i$ 为可能的最长最短路长度。记
$$K=\frac{1}{Q}\sum_{i=1}^Q\frac{d_i}{D_i}$$
当 $K=1$ 时,该测试点得满分;否则得 $0.7\cdot K$ 倍测试点得分的分数。
每个子任务的得分为所有测试点得分的 $\min$。
例如,样例 $1$ 的输出得满分;对于样例 $2$,$\displaystyle k=\frac{1}{2}\left(\frac{3}{5}+\frac{5}{9}\right)=\frac{31}{45}$,将得到 $\displaystyle 0.7\cdot \frac{31}{45}\approx 0.482$ 倍测试点得分的分数。
- $\mathrm{type}=1$:「传统」类数据
和传统题评分方式相同。