P13927 [POKATT 2024] 路牌 / Signs

题目描述

在听说了哥德堡下水道里有变异巨鼠的传闻后,你最亲密的朋友们决定逃往美妙的斯德哥尔摩。 在逃亡途中,你的朋友们注意到,通往斯德哥尔摩的路上奇怪地有很多路牌,指向隆德附近的各个小村庄。此外,路牌上的数字似乎很可疑,因为一些路牌上的信息与其他路牌相矛盾。 在你的朋友们经过的 $N$ 个路牌上,每个路牌都标有到隆德所有 $M$ 个村庄的距离。 这些距离被取整为整数,因为实际距离不一定是整数。 由于你的好朋友们碰巧拥有过目不忘的记忆力,他们清楚地记得路牌上标明的具体距离。 然而,你的朋友们不记得他们是在何时或以何种顺序看到这 $N$ 个路牌的。 你可以假设斯德哥尔摩、哥德堡和隆德的小村庄都位于一条直线上。 此外,你可以假设所有的城市、村庄和路牌都非常小,可以表示为这条直线上的点。 你还可以假设,隆德的村庄都不会位于两个路牌之间。 换句话说,隆德的村庄和路牌位于哥德堡的两侧。 ![](https://cdn.luogu.com.cn/upload/image_hosting/6v8dekro.png) 上图说明了隆德的村庄和路牌如何位于哥德堡的不同侧。 给定你的朋友们看到的这 $N$ 个路牌,请问最多能选出多少个路牌,使得它们上面给出的距离信息互不矛盾? 最后,你还可以假设,至少有 $20\%$ 的路牌是完全正确的,并且它们之间不会产生任何矛盾。

输入格式

第一行包含两个整数 $N$ 和 $M$($1 \leq N \leq 1000$, $1 \leq M \leq 200$),分别代表你的朋友们看到的路牌数量和隆德的村庄数量。 接下来的 $N$ 行输入,每行包含 $M$ 个整数。第 $i$ 行包含整数 $d_{i,1}, d_{i,2}, \ldots, d_{i,M}$($1 \leq d_{i,j} \leq 10^6$),描述了第 $i$ 个路牌上写的 $M$ 个距离。 也就是说,在第 $i$ 个路牌上,它标明了从路牌 $i$ 到村庄 $j$ 的距离向下取整后是 $d_{i,j}$,对于所有 $1 \leq j \leq M$ 均成立。

输出格式

首先,在单行上输出一个整数 $t$,表示最多能选出的互不矛盾的路牌数量。 在第二行,输出 $t$ 个整数,代表这些路牌的索引。输出的索引顺序必须满足:第一个索引对应的路牌离哥德堡和所有隆德村庄最远,最后一个索引对应的路牌离哥德堡和所有隆德村庄最近。 由于人们在处理 0-indexed 的事物时会感到困惑,我们希望路牌是 1-indexed 的。因此,输入中的第一个路牌索引为 1,最后一个路牌索引为 $N$。 如果存在多个有效的解决方案,你的程序可以输出其中任意一个。

说明/提示

### 样例解释 #### 样例 1 解释 想象一条 $x$ 轴数轴。 第二个路牌可以放在位置 $x = 1$ 处,第一个路牌在 $x = 1.5$ 处,第一个村庄在 $x = 3.5$ 处,第二个村庄在 $x = 4$ 处。 同样,也可以为 1 号和 3 号路牌找到一种符合题意的构造。 很明显,1 号和 2 号路牌是相互矛盾的,这意味着不存在一种构造能同时使用所有 3 个路牌。 #### 样例 2 注释 请注意,尽管所有路牌都指向同一个村庄,但它们将距离向下取整到了不同的数值。 #### 样例 3 注释 请注意,任意一对路牌都会导致矛盾;在这种情况下,任何单个路牌都是一个正确的答案。 ### 子任务 **本题采用捆绑测试。** | 子任务编号 | 得分 | 限制 | |:-:|:-:|---| | $1$ | $21$ | $N \leq 15, M \leq 50$ | | $2$ | $31$ | $N \leq 100, M \leq 50$ | | $3$ | $18$ | $N \leq 500, M \leq 50$ | | $4$ | $30$ | 无额外约束 |