USACO 2014 FEB SILVER
一、题目概览
中文题目名称 | 自动打字 | 路障 | 神秘代码 |
英文题目名称 | auto | rblock | scode |
可执行文件名 | auto | rblock | scode |
输入文件名 | auto.in | rblock.in | scode.in |
输出文件名 | auto.out | rblock.out | scode.out |
每个测试点时限 | 1秒 | 1秒 | 1秒 |
测试点数目 | 10 | 10 | 10 |
每个测试点分值 | 10 | 10 | 10 |
比较方式 | 全文比较 | 全文比较 | 全文比较 |
二、运行内存限制
运行内存上限 | 256 M | 256 M | 256 M |
1.自动打字{Silver题1}
【问题描述】
贝西新买了手机,打字不方便,请设计一款应用,帮助她快速发消息。
字典里有W(W<=30000)个小写字母构成的单词,所有单词的字符总数量不超过1,000,000,这些单词是无序的。现在给出N(1 <= N <= 1000)个询问,每个询问i包含一个的字符串s_i(每个字符串最多包含1000个字符)和一个整数K_i,对于所有以s_i为前缀的单词,其中按字典序排序后的第K_i个单词,求该单词在原字典里的序号。
【文件输入】
第一行为两个整数W和N。
接下来2..W+1行,每行一个单词;
接下来W+2..W+N+1行,一个整数和一个字符串,分别表示K_i和s_i。
【文件输出】
输出共N行,每行一个整数,表示位置,如果无解则输出-1。
【输入样例】
10 3
dab
ba
ab
daa
aa
aaa
aab
abc
ac
dadba
4 a
2 da
4 da
【输出样例】
3
1
-1
【样例说明】
以a为前缀的单词有{aa,aaa,aab,ab,abc,ac},第4个是ab,它在原字典中的位置是3,以da为前缀的单词有{daa,dab,dadba},第2个是dab,它在原字典中的位置是1,以da为前缀的第4个单词不存在。
2. 路障{silver题2}
【问题描述】
农民约翰的农场n(1 <= N <= 250)个结点,有M(1 <= M <= 25,000)条带权值的有向边,任意两个结点之间最多有一条边相连,任意两个结点之间都有连通的路径。他的家在结点1,谷仓在结点n,他每天都从家选择最短的路径走到谷仓。
牛们开始捣乱,选择在某一条边上放置路障,使得该边的权值变为原来的2倍。求最大能使约翰多走多少路。
【文件输入】
第一行,两个用空格隔开在整数N和M。
接下来M行,每行3个整数,A_j,B_j和L_j,分别表示一条边的两个结点和权值(权值是1...1,000,000的整数)。
【文件输出】
一个整数,表示最大值。
【输入样例】
5 7
2 1 5
1 3 1
3 2 8
3 5 7
3 4 3
2 4 7
4 5 2
【输出样例】
2
【样例说明】
原来的最短路径是1-3-4-5,总长为6,将路障放置3和4之间的边上,使得该边的权值变为6,则最短路径变为1-3-5,总长为8,增加了长度2。
3. 神秘代码{ silver题3}
【问题描述】
农民约翰收到一条的消息,记该消息为长度至少为2,只由大写字母组成的字符串S,他通过一系列操作对S进行加密。
他的操作为,删除S的前面或者后面的若干个字符(但不删光整个S),并将剩下的部分连接到原字符串S的前面或者后面。如对于S=‘ABC’,共有8总可能的操作结果:
AABC
ABABC
BCABC
CABC
ABCA
ABCAB
ABCBC
ABCC
给出加密后的目标字符串,请计算共有多少种加密的方案。
对于同字符的字符串,加密方案不止一种,比如把AA加密成AAA,共有4种加密方案。将你的答案mod 2014后输出。
【文件输入】
共一行,一个字符串,表示加密后的字符串,长度不超过100。
【文件输出】
共一行,一个整数,表示方案数mod 2014后的值。如果无解则输出0。
【输入样例】
ABABA
【输出样例】
8
【样例说明】
1. 从字符串 ABA -> AB+ABA
2. 从字符串 ABA -> ABA+BA
3. 从字符串 AB -> AB+A -> AB+ABA
4. 从字符串 AB -> AB+A -> ABA+BA
5. 从字符串 BA -> A+BA -> AB+ABA
6. 从字符串 BA -> A+BA -> ABA+BA
7. 从字符串 ABAB -> ABAB+A
8. 从字符串 BABA -> A+BABA