反馈题目有歧义,或者测试数据有问题。
查看原帖
反馈题目有歧义,或者测试数据有问题。
410986
hulhul楼主2023/1/16 17:03

首先,这道题非常简单,但大量的提交过不了,我也是,折腾了2天,最后看其他人的通过题解,才发现问题。

题目的两个操作:P x;Q x ;

Q x 是虚拟打开直到看到x要多少步; P x 是打开到看到x要多少步。 注意,P x操作之后,会顺手把x也打开;许多提交答案差1就是没有P x之后,将x也设置为打开(但很奇怪,打开x不占用打开步骤)。

正式的做法: 先建树,然后获取每个节点的倍增祖先。

优化:我们可以维护一个 布尔 数组open,用来描述第i个娃娃是否已经被打开。如果已经被打开,则i的孩子节点都是可见的,这样可以避免删边操作。

重点注意:当执行P x之后,需要把 open[x] = true,来表示x已经打开(感觉这个是题目没说清楚)。我失败的提交,都是 P x操作,只有状态 open[father[x][0]] = true;

如果P x,之后看x的孩子,需要的打开步数是1,则题目的测试数据有问题;否则就是这个歧义的规则,P x会打开x,且不算打开步骤。

希望洛谷的管理人员,能审核一下这个测试数据。看看是否是测试数据错误,导致正确的提交过不了,错误的提交才能过。

个人读题,倾向于P x表示把x放到桌面上,但并不打开。即假设y是x的孩子,P x 之后,Q y为1;测试数据中,P x之后,Q y为0;

构造测试数据:

3 2

3 2

2 1

P 2

Q 1

测试数据的答案是:

1

0

我认为正确的答案是:

1

1

2023/1/16 17:03
加载中...