题目名称 927. [河南省队2012] 信使问题a
输入输出 postmana.in/out
难度等级 ★★★
时间限制 1200 ms (1.2 s)
内存限制 512 MiB
测试数据 10
题目来源 GravatarCitron酱 于2012-07-16加入
开放分组 全部用户
提交状态
分类标签
字典树/Trie 贪心 字符串
分享题解
通过:2, 提交:5, 通过率:40%
Gravatar粘粘自喜 100 3.742 s 194.14 MiB C++
GravatarCitron酱 100 4.035 s 194.13 MiB C++
Gravatarthomount 0 0.005 s 1.80 MiB C++
GravatarRT 0 0.013 s 4.20 MiB C++
GravatarRayment 0 1.132 s 127.36 MiB C++
本题关联比赛
20120717
关于 信使问题a 的近10条评论(全部评论)
此题的数据可能有问题,有一些细节没有注意到。比如同一封信对同一个人应该只会做一次贡献,所以下面这组数据答案应该是2:
2 2
aaaaaa
hitit
2 a
100 hi
还有就是当两个居民的产生贡献的值相同时不能简单地随便取一个,这个贪心是有问题的,比如下面这组数据答案应该是50,最优访问方案之一是6,5,1,3,9,2,8,10,4,7,因为这样第一封信会在10的时候送出,这样8的贡献反而变为了0:
10 4
quovzsg
xcfllketptigy
nijekzosl
mbcntixqme
aoivdbd
bxyjievhvnuabv
oronj
rnchwxnxaybzz
jfisaxmczkg
dwdmxwaz
2 z
5 v
4 s
2 ig
GravatarRayment
2018-09-07 09:52 3楼
好像懂了的样子
Gravatar粘粘自喜
2016-03-16 21:08 2楼
AC自动机建立匹配关系 然后堆优化贪心就行了
GravatarCitron酱
2013-10-28 21:23 1楼

927. [河南省队2012] 信使问题a

★★★   输入文件:postmana.in   输出文件:postmana.out   简单对比
时间限制:1.2 s   内存限制:512 MiB

【问题描述】

一位信使来到一个村落送信,不幸的事由于下雨他的信件信封上的地址都模糊不清,只剩下连续的一小部分可以辨认。村落中共有m户居民,每户村民的地址可以用一个只含有小写字母的字符串表示,第i户村民的地址为Ai;信使需要投送n封信件,第j封信件信封上可以辨认的部分地址记作Bj,若Bj为Ai的子串,则第i户家庭可能为第j封信件的收件人。最坏情况下,信使可能需要走遍一封信件的所有可能收件人才能将信件投送出去。

一些信件还附带有包裹,因此每封信件都有一个重量值Wi,信使从一户村民X移动到另一户村民Y的代价为到达Y时身上所携带的信件重量只和。

信使不想走太长的路,因此他希望每户人家只经过一次,即所走的路径为一条链,在这个前提下他请你帮他设计一条路线,使得在最坏情况下投送完所有信件所花费的代价最小。

【输入格式】

输入数据共n+m+1行:

第1行为两个整数m、n,表示村落中共有m户村民,信使需要投送n封信件。

第2行到第m+1行每行为一个字符串,表示第每户村民的地址。

第m+2行到第n+m+1行每行有一个整数和一个字符串,表示每封信件的重量以及可辨认出的地址。

【输出格式】

输出数据仅有1行,为在最坏情况下的最小代价。

【输入样例】

3 3
a
b
ab
1 a
3 b
2 ab

【输出样例】

5

【样例解释】

信使的路线为ab->b->a,最坏情况下在ab投送出第三封信,在b投送出第二封信,在a投送出第一封信。ab->b的代价为1+3=4,b->a的代价为1,总代价和为5。

【数据规模】

10%的数据满足1≤m,n≤15

30%的数据满足1≤m,n≤100

100%的数据满足1≤m,n≤5000, 0≤Wi≤100, 每个信件的字符串的长度Ln≤300,每户村民的地址字符串长度Lm≤2000。

数据保证每封信件都至少有一个可能的收信人,且每户村民都至少成为一封信件的可能收信人。