题目名称 | 296. [NOI 2000]古城之谜 |
---|---|
输入输出 | lostcity.in/out |
难度等级 | ★★★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 128 MiB |
测试数据 | 10 |
题目来源 | BYVoid 于2009-03-11加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:15, 提交:82, 通过率:18.29% | ||||
Pickupwin | 100 | 0.006 s | 0.45 MiB | C++ |
Pickupwin | 100 | 0.007 s | 0.45 MiB | C++ |
thomount | 100 | 0.009 s | 5.94 MiB | C++ |
StevenHolmes | 100 | 0.011 s | 0.63 MiB | C++ |
QWERTIer | 100 | 0.011 s | 5.22 MiB | C++ |
瑆の時間~無盡輪迴·林蔭 | 100 | 0.019 s | 38.08 MiB | C++ |
mikumikumi | 100 | 0.041 s | 2.51 MiB | C++ |
cstdio | 100 | 0.052 s | 1.67 MiB | C++ |
mildark | 100 | 0.065 s | 2.23 MiB | C++ |
zqzas | 100 | 0.071 s | 0.52 MiB | C++ |
关于 古城之谜 的近10条评论(全部评论) | ||||
---|---|---|---|---|
不用倒序建字典树也能做
| ||||
血的教训!!!
不要用vector存所有节点!!! 用数组!!!! 开始的时候用的是vector(节点类型名为TRnode),定义了一个TRnode::build()函数用以建Tire树,然后在build函数里面用了一下push_back()往vector里加元素,然后目前这个节点的数据就奇奇怪怪的变了!!! 再也不相信爱情了 | ||||
麻烦的动态规划,我没用字典树,用STL库中的map代替。
QhelDIV
2013-01-01 16:25
1楼
|
著名的考古学家石教授在云梦高原上发现了一处古代城市遗址。让教授欣喜的是在这个他称为冰峰城(Ice-Peak City)的城市中有12块巨大石碑,上面刻着用某种文字书写的资料,他称这种文字为冰峰文。然而当教授试图再次找到冰峰城时,却屡屡无功而返。
幸好当时教授把石碑上的文字都拍摄了下来,为了解开冰峰城的秘密,教授和他的助手牛博士开始研究冰峰文,发现冰峰文只有陈述句这一种句型和名词(n)、动词(v)、辅词(a)这三类单词,且其文法很简单:
注:其中<名词>、<动词>和<辅词>由词典给出,“::=”表示定义为,“|”表示或,{}内的项可以重复任意多次或不出现,[]内的项可以出现一次或不出现。
在研究了大量资料后,他们总结了一部冰峰文词典,由于冰峰文恰好有26个字母,为了研究方便,用字母a到z表示它们。
冰峰文在句子和句子之间以及单词和单词之间没有任何分隔符,因此划分单词和句子令石教授和牛博士感到非常麻烦,于是他们想到了使用计算机来 帮助解决这个问题。假设你接受了这份工作,你的第一个任务是写一个程序,将一篇冰峰文文章划分为最少的句子,在这个前提下,将文章划分为最少的单词。
[输入文件]
[输出文件]
[输入输出文件样例]
Input
11 n.table n.baleine a.silly n.snoopy n.sillysnoopy v.is v.isnot n.kick v.kick a.big v.cry sillysnoopyisnotbigtablebaleinekicksnoopysillycry.
Output
2 9
[样例说明]
(为了阅读方便,划分的单词用空格分隔,在单词右标出它的词性,每行写一个句子,用句号表示句子结束。)
输出对应的划分:
sillysnoopy[n] isnot[v] big[a] table[n]. baleine[n] kick[v] snoopy[n] silly[a] cry[v].
如果用下面的划分:
silly[a] snoopy[n] isnot[v] big[a] table[n]. baleine[n] kick[v] snoopy[n] silly[a] cry[v].
则划分的句子数仍为2个,但单词数却多了1个,为10个,显然应该按前者而不是后者划分。