P13537

可能更好的阅读体验

Statement

给定 \(n\)\(m\) 边连通图,构造 \(k\times k\) 方格,值域 \([1,n]\cap\mathbb{Z}\),满足 \(u,v(u\neq v)\) 有边当且仅当 \(u,v\) 在方格中四相邻位置出现过。

满分限制:\(k\le2n\)

Solution

首先考虑树,发现直接填欧拉序即可。

找出任意 dfs 树,还需加入返祖边。

一个简单的想法是每个点在欧拉序中选一个位置并将返祖边插入,如:

a x a b c x c
a a a b c c c
a x a b c x c
a a a b c c c

可以做到 \(4n\times 2n\)

考虑优化,首先格子数已经爆了,考虑上下两层共用格子,如:

a x a b c x c
a a x a b c x
a x a b c x c

可以做到 \(4n\times n\)

这样格子数已经可以接受了,但是形态太差了。

好像有难写的 \(3n\times 3n\) 我没写,尝试把树分成两部分也不行。

于是先把代码写了,submission

试了一下发现只有倒三角部分是实际有效的,因为深度为 \(d\) 的点在欧拉序中前后必然有至少 \(d\) 个,而返祖边至多只有 \(d-1\) 条。

那么就非常契合斜线,因为方格中的斜线也是中间多两边少的形态。

于是把原来第一行放到方格右上边缘,向左下延伸,如:

euler tour order:1 2 1 3 4 3 1

first row:1 x 1 2 x 2 1 3 x 3 4 x 4 3 1

1 x 1 2 x 2 1 3
x 1 2 x 2 1 3 x
1 2 x 2 1 3 x 3
2 x 2 1 3 x 3 4
x 2 1 3 x 3 4 x
2 1 3 x 3 4 x 4
1 3 x 3 4 x 4 3
3 x 3 4 x 4 3 1

可以做到 \(2n\times 2n\)submission

posted @ 2026-01-21 12:28  ax_by_c  阅读(1)  评论(0)    收藏  举报