3612. 网址的替换

Kevin_K

不行我要吐(tou)槽(su):

原文:

第2行一定是:
| ---- | -------- | ---- | ---- | ------ | -------------- | ---------- | ---- | ---- |

然而第5个测试点和第6个测试点就不是了……

还有就是在题目的限制下,似乎存在无解数据了解一下?
随便造一组:

| 1000 | 2 | Easy | 题库 | fanqiexi | 我是2 | 我真的是字段2! | Hard | 新题 | fanqiedong | 那个说是字段2的是骗人的 | 相信 | 我! | |||||||(╯°Д°)╯︵┻━┻||||||| |

那么问题来了,题目到底是Easy的还是Hard的呢?我认为是Very Super!

| 1000 | 2 | Easy | 题库 | fanqiexi | 我是2 | 我真的是字段2! | Hard | 新题 | fanqiedong | 那个说是字段2的是骗人的 | 相信 | 我! | |||||||(╯°Д°)╯︵┻━┻||||||| |

| 1000 | 2 | Easy | 题库 | fanqiexi | 我是2 | 我真的是字段2! | Hard | 新题 | fanqiedong | 那个说是字段2的是骗人的 | 相信 | 我! | |||||||(╯°Д°)╯︵┻━┻||||||| |

Hints:

你(wo)以为每个分隔字段的|两(yi)边一定会有 ?Too young, too simple, and sometimes naive.
其他坑(cuo)点有空再写。

Kevin_K

我太菜了,打扰了......不过容许我再吐槽一句:|不转义真的好吗…

jxtxzzw

吐(投)槽(诉)已处理。处理意见如上。用户满意度100%好评。欢迎再次吐(投)槽(诉)。

jxtxzzw

不可能无解的,所有输入都保证有解,你是可以判断出唯一正确的level字段的。
关键在于你能不能意识到,不可能所有的|两边都有空格。
(因此,你构造的数据并不正确)
因为题目说了原检索表是Markdown语法,且由第2行你可以很清楚地知道一共有9个字段。
所以势必会有一部分|不同时存在左右两边的空格(A|BA |BA| B都不会作为字段分隔的标志,但是A | B将会作为字段分隔的标志)。
所以你唯一可以用来判断字段标准的是,|
通过同时有左右空格的|来完成字段的划分,之后,由于每个字段的内容都是不确定的,所以你只能通过唯一确定的两个字段来判断到底哪个是正确的level字段。
第3个字段是题目的难度。一定是Naive、Easy、Medium、Hard和Super中的一个。
第4个字段是题目的来源。一定是题库和新题中的一个。

jxtxzzw

因为本题是实际生活中的情况,与GPS那题类似,所有数据都是完全真实的,所以不可避免的会有各种可能的情况(例如GPS传输时候少了两个,,例如用户输入网址的时候懒得前后加空格……),所以 it is your responsibility to 处理输入,而不是由出题人事先准备好完美是数据就等着你去推导数学公式去做,这与算法竞赛的数据不同。

jxtxzzw

找“新题”或者“题库”最后出现的位置,不好,因为我完全可以在备注字段加入有关于“这是备注|新题|题库|Easy|Hard”,你是不可能判断最后出现的“新题”和“题库”到底是不是给定字段的。

jxtxzzw

$Case5$ 和 $6$ 的第 $2$ 行稍微长了点,我的锅。不过不影响做题。这一行的本意是想要告诉你,字段的个数一定是 $9$ 个字段。

Zoey

这题找“新题”或者“题库”最后出现的位置,再据此判断level的位置。应该就可以和前面的有迷惑性的level区分开吧

不知道这个人是谁

经过无数次WA,这道题以下几点注意
1.只有 “名称” 中会出现 “|”,因此从后向前搜索 “|” 即可
2.注意编号是四位数1001-9999,其它均不合法,五位数是不合法的
其它的问题暂时没遇到过,可以看看大佬们的评论。

jxtxzzw

理论上是的,Markdown语法的表格,|两边应该是有空格的,所以任何A|B形式的都不会作为分隔符,你的理解是对的。
至于两组测试数据,我需要做如下解释(辩解?):Markdown语法,包括拓展的Markdown语法(例如GitHub Flavored)都没有对这类表示方法做特别严格的要求。只有在标题和列表的地方,Markdown语法有所谓的严格模式,具体可阅读Strict-Mode
也就是说,你在实际使用中,|A|B|V|也是被接受的,是可以被正常解析成表格语法。
能够这样做的操作的关键是,所有输入数据的第1行是严格的9个字段,这也就奠定了后面9个字段的|哪怕没有空格也能解析。
(虽然我不知道它是怎么做到的)
另外,有关字符串处理的题目,我用的数据都是现实生活中的真实数据(包括本题、GPS、验证电子邮件地址),所以你可能会觉得很多数据匪夷所思、不符合竞赛算法的层层推导,但是很抱歉地,事实上就是,你永远不知道会有怎么奇葩的数据,因此,只要能够处理的,你都要想方设法地去处理。
加油!

10175102213

所以是说任何A|B形式的都不会作为分隔符吗?但是我看到数据里面有很多没有空格也当作分隔符的啊,比如Test 6里面的| 1002 | 插入排序| 新题 | Medium |新题|张三|二叉树||||还有Test 3里面的| 9999 | 快速排序 | Super | 题库 |@#D|数组|并查集|暂 不 公 开|S P J|。还是说我的理解有些偏差?

你当前正在回复 博客/题目
存在问题!